mysql - 在子选择 IN() 中使用 SELECT 结果

标签 mysql sql subquery

以下查询有效(下面的示例查询)

SELECT cat, dog, mouse, ids,
    (SELECT cheese
    FROM my_second_table AS a
    WHERE a.ids IN (1,2,3,4,5,6,7,8,9,10)
    LIMIT 1) AS cheese
FROM my_first_table

它返回了 5 列,其中包含我所期望的正确数据,包括奶酪列。

以下查询不起作用,奶酪列始终为空

SELECT cat, dog, mouse, ids,
    (SELECT cheese
    FROM my_second_table AS a
    WHERE a.ids IN (ids)
    LIMIT 1) AS cheese
FROM my_first_table

ids包含与上面第一个查询中相同的逗号分隔数字,从 my_first_table 中的每一行检索.

我觉得这应该可行,但我做错了。可以在 Sub-Select IN() 子句中使用 SELECT 结果吗?

最佳答案

尝试使用 find_in_set 函数,例如

SELECT cat, dog, mouse, ids,
    (SELECT cheese
    FROM my_second_table AS a
    WHERE find_in_set(a.ids, ids)
    LIMIT 1) AS cheese
FROM my_first_table

IN accepts a list or parameters to search, FIND_IN_SET accepts a string parameter containing a comma-separated list.

在您的情况下,ids 是逗号分隔的字符串,因此 find_in_set 将为 true,IN 子句返回 false

关于mysql - 在子选择 IN() 中使用 SELECT 结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24735748/

相关文章:

sql - 更改大表中的列类型

php - 在 laravel Controller 中加入两个表时出错

php - 通过选择总和(总计)来更新总计

Mysql 函数输出作为 where 条件 in 子句的一部分

mysql - 用于逗号分隔值的 REGEX mysql

php - 数组和 SQL 中的重复数据问题

MySQL Grouping 使用 group_concat 然后 Group BY

MySQL - 按多个类别运行总计

mysql - MYSQL子查询的正确写法

java - 对sql结果进行排序并通过java中的表循环显示所有结果