【问题标题】:Use GROUP_CONCAT result in IN Clause Mysql在 IN 子句 Mysql 中使用 GROUP_CONCAT 结果
【发布时间】:2013-11-28 19:24:58
【问题描述】:

我有一个返回逗号分隔整数的查询 喜欢:

select GROUP_CONCAT(ids) from table2

现在我想在另一个查询中使用该结果 喜欢:

select * from table1 where column in (select GROUP_CONCAT(ids) from table2)

在这种情况下,它将只考虑 IN 子句中的第一个值。

【问题讨论】:

    标签: mysql group-concat


    【解决方案1】:

    没有使用连接和使用子查询的任何特殊原因

    select * from table1 t1
    JOIN table2 t2 on (t2.column = t1.ids)
    

    【讨论】:

      【解决方案2】:

      我同意@Alma 的观点,即使用 IN 无法做到这一点,您可以使用 FIND_IN_SET 做到这一点,但如果您可以使用 IN 做到这一点,那可能是更好的方法:

      SELECT *
      FROM table1
      WHERE find_in_set(ids, (
            SELECT GROUP_CONCAT(ids)
            FROM table2
            )) != 0;
      

      sqlfiddle demo

      【讨论】:

      • 当您可以直接使用 IN() 时,这不是一个好的解决方案,GROUP_CONCAT 是不可取的,因为它有一个字符限制,如果您在答案中使用,您需要增加该限制,您需要简要说明另外,当它可以以简单的方式完成时,为什么先设置然后应用find_in_set 才有意义?
      • 我并不是说这是一个好方法。我建议改用 IN,但我认为这是他所要求的。
      • 有没有其他方法可以在 where 子句中用于 group_concat() 值而不是 find_in_set
      猜你喜欢
      • 2011-05-16
      • 1970-01-01
      • 2014-03-09
      • 1970-01-01
      • 1970-01-01
      • 2018-07-15
      • 1970-01-01
      • 1970-01-01
      • 2020-06-23
      相关资源
      最近更新 更多