2011-05-31 121 views
2

我有需要在數據庫中查找的項目列表(用逗號分隔)。最初我單獨查找每個項目代碼,但必須有一個更簡單的方法來做到這一點。MySQL中的布爾運算符

我在玩phpMyAdmin,試圖選擇沒有運氣的物品。

SELECT * 
FROM `items` 
WHERE `code` = (20298622 
OR 83843296 
OR 46549947) 

返回沒有結果。

SELECT * 
FROM `items` 
WHERE `code` =20298622 
OR 83843296 
OR 46549947 

返回數據庫中的每個項目。

我正在閱讀MySQL文檔,看起來OR(或||)應該做我正在尋找的東西。我哪裏做錯了?

此外,FWIW,code是一個整數字段。

謝謝!

回答

4

您可以使用...

SELECT * 
    FROM `items` 
WHERE `code` 
    IN (20298622, 
     83843296, 
     46549947) 
+0

這是最方便的答案,因爲所有的項目都已經分開以逗號分隔。謝謝! – 2011-06-01 00:17:25

2

失敗的原因是因爲OR語句分隔兩個條件語句。因此,您的第一個條件陳述將評估(code = 20298622),但您的下一個陳述只是一個數字。如果要使用OR語句,則需要再次指定列名稱。下面是它會是什麼樣子:

SELECT * 
FROM `items` 
WHERE `code` = 20298622 
OR `code` = 83843296 
OR `code` = 46549947 

你也可以使用像在更復雜的語句或者你甚至可以做一個連接到第二臺(甚至一個臨時表)。基本上,有很多方法可以做到這一點。您只需要選擇最適合您的情況(速度,易用性等)

1

您沒有使用正確的語法。您應該更改聲明:

SELECT * 
FROM `items` 
WHERE `code` = 20298622 
    OR `code` = 83843296 
    OR `code` = 46549947 

或作爲他的回答@alex筆記,你可以使用IN條款:

SELECT * 
FROM `items` 
WHERE `code` IN (20298622, 83843296, 46549947)