我如何将 WHERE
或 HAVING
子句与 GROUP_CONCAT
结合使用,以便返回的数据将包含项目的任意组合包含 ID 的 GROUP_CONCAT
而不仅仅是单个匹配项,例如
SELECT p.id,
p.title,
GROUP_CONCAT(a.author_id) as 'aus'
FROM publications p INNER JOIN authors a
ON p.publication_id = a.publication_id
WHERE a.author_id = 2
GROUP BY p.id,p.title
会回来
id title aus
1 A 1,2,3
2 B 1,2
3 C 2
4 D 2
5 E 2,3
而不仅仅是 3 和 4。
我在 a.author_id 列和 GROUP_CONCAT
产品上尝试了 HAVING
和 WHERE
子句的各种组合。
最佳答案
您应该在 HAVING 子句中使用 FIND_IN_SET。
SELECT p.id, p.title, GROUP_CONCAT(a.author_id) as aus
FROM publications p INNER JOIN authors a
ON p.publication_id = a.publication_id
WHERE 1
GROUP BY p.id,p.title
HAVING FIND_IN_SET('2', aus) > 0
关于mysql - 在 GROUP_CONCAT 中选择 ID,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41696739/