GROUP_CONCAT和GROUP BY问题

时间:2012-10-11 22:44:31

标签: php mysql group-by group-concat

假设一个对象可以有多个tid

现在假设我执行此查询:

SELECT n.nid, t.tid, GROUP_CONCAT(t.tid) 
FROM node n JOIN term_node t ON t.nid = n.nid 
GROUP BY n.nid 
HAVING t.tid = 31;

我想在其中获取tid = 31的表节点中的条目...但是我还想要一个与该行对应的所有tid的列表(因此也就是GROUP_CONCAT),即使它们不是31

使用WHERE t.tid = 31将省略GROUP concat中不是31的tid 并且使用HAVING t.tid = 31将省略出现在GROUPed行中的tid列不是31的行

无论哪种方式都有可能使GROUP_CONCAT列表不完整或者至少有一个tid = 31不完整的节点行

有没有办法解决这个问题,以确保我得到节点中至少有一个tid关联等于31的所有节点以及GROUP_CONCAT将列出所有与该节点关联的tid列表?

1 个答案:

答案 0 :(得分:0)

这可能会更好,因为2个查询。 GROUP_CONCAT对结果字符串的长度有限制,所以除非你知道你总是在字符串长度限制之下,否则它是不可靠的。

我会运行第一个查询'WHERE tid = 31',然后运行一个单独的查询以获取所有其他ID并在代码中合并。

相关问题