选择 GROUP_CONCAT 中的 WHERE id

Ali*_*eir 4 mysql group-concat

如何将WHEREorHAVING子句与 a 结合使用GROUP_CONCAT,以便返回的数据将包括GROUP_CONCAT包含 ID 的项目的任意组合,而不仅仅是单个匹配项,例如

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
Run Code Online (Sandbox Code Playgroud)

会回来

id    title     aus
1     A         1,2,3
2     B         1,2
3     C         2
4     D         2
5     E         2,3
Run Code Online (Sandbox Code Playgroud)

而不仅仅是 3 和 4。

我在 a.author_id 列和产品上尝试了HAVING和子句的各种组合。WHEREGROUP_CONCAT

Rah*_*ahi 6

您应该在 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 
Run Code Online (Sandbox Code Playgroud)