【发布时间】:2019-08-03 00:15:46
【问题描述】:
我有一个“关系表”来存储哪些帖子有哪些标签。就像 Stack Overflow 一样,一个帖子可以有很多标签,一个标签可以有很多帖子。
该表只有两列,如下所示:
pid tid
1 3
1 4
2 1
2 3
2 4
3 1
3 3
3 4
4 1
4 3
5 1
5 3
6 2
6 4
在上表中,帖子 2 和 3 有一组相同的标签(另一列上的值 tid),帖子 4 和 5 也是如此。
我想选择所有帖子(帖子 ID),其中存在具有相同 tid 集的另一个帖子,因此查询应从列 pid 返回 2 3 4 5。
我在 MariaDB 10.1.38 上运行。
这是我自己的尝试,但显然失败了:
SELECT p.pid
FROM post_tags AS p
WHERE EXISTS (
SELECT *
FROM post_tags AS p2
WHERE
GROUP_CONCAT(p.tid SEPARATOR ',') = GROUP_CONCAT(p2.tid SEPARATOR ',')
GROUP BY p2.pid
)
GROUP BY p.pid;
MariaDB 告诉我:
ERROR 1111 (HY000):组函数使用无效
【问题讨论】:
标签: mysql select group-by mariadb