2010-12-20 44 views
1

分析我的問題後,我想我可能需要在SQL中使用「union」運算符,但我不確定。 Anywho我我的鏈接中查詢笨出來這個查詢:鏈接查詢 - 無法獲得和/或工作

SELECT * 
FROM (`deals`) 
WHERE `category` = 'books' 
AND `host` = 'amazon' 
OR `host` = 'zappos' 
OR `host` = 'newegg' 
ORDER BY `time` desc 

所以它選擇的東西,是不是在類的書籍,但對這些主機。所以我希望能夠做到這一點,所以它只返回書籍的結果,並且擁有這三種中的任何一種。我寧願這樣做與數據庫查詢,而不是手動過濾後。 我正在使用MySQL與innoDB表。謝謝

回答

10

使用括號使其按需要工作。

SELECT * 
FROM (`deals`) 
WHERE `category` = 'books' 
AND (`host` = 'amazon' 
OR `host` = 'zappos' 
OR `host` = 'newegg') 
ORDER BY `time` desc 

或使用 'IN' 關鍵字:

SELECT * 
FROM (`deals`) 
WHERE `category` = 'books' 
AND `host` IN ('amazon', 'zappos', 'newegg') 
ORDER BY `time` desc 
+1

我覺得IN子句是最好的選擇 – 2010-12-20 03:14:15

+1

我同意IN子句將使這裏最合乎邏輯的意義:) – judda 2010-12-20 03:17:11

+0

工作奇蹟Judda! – 2010-12-20 03:25:21

0

嘗試一些括號:

SELECT * 
FROM (`deals`) 
WHERE `category` = 'books' 
AND ( 
`host` = 'amazon' 
OR `host` = 'zappos' 
OR `host` = 'newegg' 
) 
ORDER BY `time` desc