【问题标题】:GROUP CONCAT and GROUP BY issueGROUP CONCAT 和 GROUP BY 问题
【发布时间】:2012-10-02 17:13:00
【问题描述】:

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

现在假设我做这个查询:

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 列表?

【问题讨论】:

    标签: php mysql group-by group-concat


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 2019-02-11
      • 2016-03-06
      • 1970-01-01
      • 1970-01-01
      • 2011-06-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-06-04
      相关资源
      最近更新 更多