我有以下查询。
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 并收到许多因此错误:Error executing the SQL statement
接收 tag_id 数组的过程是什么?我知道此语句适用于单个 ID,因为如果我删除第二个 WHERE 条件,查询将起作用。
最佳答案
使用 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 会返回多行,当它返回时,语句会爆炸,因为 =
只能处理一个值。
关于MySQL逻辑操作SELECT查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13103004/