gpt4 book ai didi

mysql - 将 GROUP_CONCAT 与 where 子句条件一起使用时的结果不正确

转载 作者:行者123 更新时间:2023-11-29 05:18:56 24 4
gpt4 key购买 nike

我有一个这样的表:

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,我怎样才能让它匹配该组之外的代码?

最佳答案

我会首先编写一个子查询来获取哪个 genex 具有 alpha 代码:

SELECT DISTINCT genex
FROM drugs
WHERE codeName = 'Alpha';

然后,您可以将其用作您的 IN 子句,以便它仅包含将在组连接列表中具有 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示例。

关于mysql - 将 GROUP_CONCAT 与 where 子句条件一起使用时的结果不正确,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28751473/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com