我有一个这样的表:
ID | GenEx | CodeName | Desc
----------------------------
1 | Cipro | Dolvo |
2 | Ludavil | Ymir |
3 | Cipro | Alpha |
我的查询是这样的:
SELECT GenEx, GROUP_CONCAT(CodeName) AS Code
FROM Drugs D
WHERE `CodeName` IN ('Alpha')
GROUP BY GenEx;
我想要的结果是:
| Genex | Code |
+-------+-------------+
| Cipro | Dolvo,Alpha |
我得到的结果是:
| Genex | Code |
+-------+-------------+
| Cipro | Alpha,Alpha |
该WHERE IN()
子句使GROUP_CONCAT
替换返回的所有匹配限制集的内容。只要Alpha
包含它,如何获取它以匹配该集合之外的代码?
我将首先编写一个子查询,该子查询将获得具有基因代码的基因:
SELECT DISTINCT genex
FROM drugs
WHERE codeName = 'Alpha';
然后,您可以将其用作IN
子句,以便它仅包括将在组concat列表中具有Alpha的Genex:
SELECT genex, GROUP_CONCAT(code_name)
FROM drugs
WHERE genex IN (
SELECT DISTINCT genex
FROM drugs
WHERE codeName = 'Alpha')
GROUP BY genex;
编辑
关于你的子查询的未成年注意,你可以代替WHERE =
用IN
,如果要检查多个代码的路线:
SELECT DISTINCT genex
FROM drugs
WHERE codeName IN ('Alpha');
这是一个SQL Fiddle示例。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句