2012-10-27 106 views
3

我有以下查詢。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條件,查詢就起作用了。

回答

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%' 
    ) 
... 

你有基本的問題是,選擇將返回多行,而當它沒有,語句爆炸,因爲=只能處理一個值。

+0

非常感謝,這解決了我的問題。 –