mysql - 在 GROUP_CONCAT 中选择 ID

标签 mysql group-concat

我如何将 WHEREHAVING 子句与 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 产品上尝试了 HAVINGWHERE 子句的各种组合。

最佳答案

您应该在 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/

相关文章:

php - GROUP_CONCAT 查询上的 var_dump 不起作用

mysql - 如何命名 SQL FOREIGN KEY 约束 CREATE 两个表列到关系表中

mysql - GROUP_CONCAT(SELECT * FROM table) 是这样的吗?

mysql - 多个查询连接

python - sqlAlchemy 使用 like 和 max 选择

mysql - group concat 2 values when 子句只返回 1

mysql - 在 group_concat 中排序

MySQL简单查询错误

mysql - 使用单个 Delete 语句删除多个表

php - Mysql使用IN搜索包含每个IN子句单词的条目