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

时间:2014-07-14 11:41:31

标签: 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结果吗?

1 个答案:

答案 0 :(得分:2)

尝试使用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接受要搜索的列表或参数,FIND_IN_SET接受包含逗号分隔列表的字符串参数。

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