2012-04-11 95 views
3

我有一個表是這樣的:PHP MySQL的子查詢過濾

id  price condition  username 
---------------------------------------- 
1  20  New   Kim 
2  30  Used   Kim 
3  40  Used   George 
4  60  New   Tom 

我的問題是關於子選擇。當我使用這個查詢,

SELECT * 
FROM `table` 
WHERE `username` = 'kim' 
    AND `price` = '20' 
    OR `condition` = 'New' 

它成爲最後一個條件真實,帶來了2條記錄,其中狀態=「新」

然而,當我使用AND,它返回正確的記錄。

SELECT * 
FROM `table` 
WHERE `username` = 'kim' 
    AND `price` = '20' 
    AND `condition` = 'New' 

我想嵌套查詢,以便我只能從第一個查詢的結果中選擇價格和條件,即用戶名。謝謝

回答

3
SELECT * FROM table WHERE username = 'kim' AND (price = '20' OR condition = 'New'); 
+0

謝謝你。工作!從來沒有想到這一點。 – karto 2012-04-11 15:45:22

2

由於Rafal Wojcik說你需要利用一些括號來告訴數據庫什麼或你正在分組。

沒有任何指導做好發動機組所有的條件語句,因爲他們來:

username = 'kim' AND price = 20 OR condition = 'New' 

全文

((username = 'kim' AND price = 20) OR condition = 'New') 

正如你看到的,這是不是你想要的。此處或適用於「kim-20」或「新」

與您的所有AND情況相同的問題。

祝你好運!