【问题标题】:Mysql query with group_concat in subquery not giving correct results子查询中带有 group_concat 的 Mysql 查询没有给出正确的结果
【发布时间】:2011-08-16 18:08:30
【问题描述】:

我有 2 张桌子:

  • category(inter_archi_cattable) 及其与其他的链接
  • 实体(inter_archi表)

我只想选择链接到任何实体的类别。

SELECT * 
  FROM inter_archi_cat 
 WHERE id IN (SELECT GROUP_CONCAT(DISTINCT sub_cat) as allcat 
                FROM inter_archi)

如果我单独运行子查询,我会给出正确的结果(apx 40 条记录)。但是在使用主查询运行时,它只给出 1 条记录。

【问题讨论】:

    标签: mysql sql aggregate-functions


    【解决方案1】:

    我已经做到了:

    这里是更改查询:

    SELECT distinct cat.id,cat.name
      FROM inter_archi_cat  as cat
      join   inter_archi as inter on (cat.id in (inter.sub_cat))
    

    得到想法

    MySQL - How to use subquery into IN statement by value

    【讨论】:

      【解决方案2】:

      您不必使用 IN 和子查询。您可以使用简单的内部连接来获得相同的结果:

      SELECT ic.* FROM inter_archi_cat ic 
      JOIN inter_archi i 
      ON i.sub_cat = ic.id 
      GROUP BY ic.id
      

      这样会快很多。

      【讨论】:

      • 我在 sub_cat 列下的每一行下有多个用逗号分隔的类别
      • 我明白了,那你真的需要IN,所以你自己的答案很好,但你应该改变你的问题以获得正确的信息,以便将来其他人可以从中学习。
      猜你喜欢
      • 1970-01-01
      • 2019-07-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多