我有以下查询。
SELECT
f.id, f.food_name, tm.resource_id, tm.tag_id, t.name
FROM
tag as t, tagmap as tm
JOIN
item as f
ON
(
f.id = tm.resource_id AND tm.tag_id =
(
SELECT
t.tag_id
FROM
tag as t
WHERE
t.name LIKE '%meat%' OR t.name LIKE '%vegan%'
)
)
GROUP by f.id
我认为错误符合
f.id = tm.resource_id AND tm.tag_id =
它正在寻找单个tag_id并接收许多错误:执行SQL语句时出错
接收tag_id数组的过程是什么?我知道这个语句适用于单个ID,因为如果删除第二个WHERE条件,查询就会起作用。
答案 0 :(得分:2)
使用IN
关键字:
...
AND tm.tag_id IN -- Changed = to IN here
(
SELECT
t.tag_id
FROM
tag as t
WHERE
t.name LIKE '%meat%' OR t.name LIKE '%vegan%'
)
...
你遇到的基本问题是select会返回多行,当它发生时,语句会爆炸,因为=
只能处理一个值。