在 IN 子句 Mysql 中使用 GROUP_CONCAT 结果
Posted
技术标签:
【中文标题】在 IN 子句 Mysql 中使用 GROUP_CONCAT 结果【英文标题】:Use GROUP_CONCAT result in IN Clause Mysql 【发布时间】: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 子句中的第一个值。
【问题讨论】:
【参考方案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以上是关于在 IN 子句 Mysql 中使用 GROUP_CONCAT 结果的主要内容,如果未能解决你的问题,请参考以下文章
在 IN 子句 Mysql 中使用 GROUP_CONCAT 结果