以下查询有效(下面的示例查询)
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/