我有一个“关系表”,存储哪个帖子有哪些标签。就像Stack Overflow一样,帖子可以有很多标签,标签可以有很多帖子。
该表只有两列,看起来像……
GROUP_CONCAT() 是一个聚合函数,所以你不能在它中应用它 WHERE 条款,因为它在评估中 SELECT 条款(这发生在 WHERE )。
GROUP_CONCAT()
WHERE
SELECT
另请注意,您应该添加一个 ORDER BY 在里面 GROUP_CONCAT() 功能。除非您明确指定,否则关系数据库中没有保证的顺序。
ORDER BY
你可以这样做:
SELECT t1.pid FROM ( SELECT pid, GROUP_CONCAT(tid ORDER BY tid) AS gctid FROM t t1 GROUP BY pid ) t1 JOIN ( SELECT pid, GROUP_CONCAT(tid ORDER BY tid) AS gctid FROM t t1 GROUP BY pid ) t2 ON t1.pid != t2.pid AND t1.gctid = t2.gctid