MySQL逻辑运算SELECT查询

时间:2012-10-27 18:35:04

标签: mysql select

我有以下查询。

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条件,查询就会起作用。

1 个答案:

答案 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会返回多行,当它发生时,语句会爆炸,因为=只能处理一个值。