假设一个对象可以有多个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...but的条目,然后我还想要与该行(因此是GROUP_CONCAT)相对应的所有tid的列表,即使它们不是31
使用WHERE t.tid = 31将省略组concat中不是31的tid,使用HAVING t.tid = 31将省略出现在GROUPed行中的tid列不是31的行
任何一种方法都有可能使GROUP_CONCAT列表不完整,或者至少有一个tid = 31的节点行不完整
有没有办法解决这个问题,这样我就可以保证获取所有节点,其中该节点至少有一个tid关联等于31,并且GROUP_CONCAT将列出与该节点关联的所有tid列表?
发布于 2012-10-12 06:51:36
这可能会比两个查询更好。GROUP_CONCAT对结果字符串的长度有限制,因此它是不可靠的,除非您知道您将始终处于字符串长度限制之下。
我会运行第一个查询'WHERE tid = 31',然后运行一个单独的查询来获取所有其他tid,并在代码中组合。
https://stackoverflow.com/questions/12849720
复制相似问题