2013-04-22 127 views
0

可以說我有1個表只有多列。比方說:MySQL查詢多列過濾?

Fruits 
-------------------------------------- 
id | name  | country 
-------------------------------------- 
1 | Banana  | china 
2 | Orange  | japan 
3 | Apple  | japan 
4 | Apple  | china 
5 | Banana  | usa 
6 | Orange  | china 

那麼簡單查詢SELECT所有的水果,其中id < 6
是:

SELECT * FROM fruits WHERE id < 6 

然後,它會返回:

-------------------------------------- 
id | name  | country 
-------------------------------------- 
1 | Banana  | china 
2 | Orange  | japan 
3 | Apple  | japan 
4 | Apple  | china 
5 | Banana  | usa 

然後通過附加上述查詢,我​​怎麼能進行下去,以排除更多的東西。
例如:

Do NOT want to see, any "APPLE" from "CHINA". 

所以最終的結果必然是:

-------------------------------------- 
id | name  | country 
-------------------------------------- 
1 | Banana  | china 
2 | Orange  | japan 
3 | Apple  | japan 
5 | Banana  | usa 

這又是without行具有if, name='Apple' AND country='china'起來!

  • 因此,通過持續的第一個查詢,我怎樣才能添加其他「和狀況對」得到這樣的結果嗎?

我會說:

SELECT * FROM fruits WHERE id < 6 ... AND DON'T RETURN this condition where name='Apple' and country='china' TOGETHER 

回答

1

試試這個

SELECT * FROM fruits WHERE 
       (name ,country) not in (select 'Apple' ,'china' from Fruits) 

HAVING id < 6 

DEMO HERE

+0

好的我更新了我的答案希望它可以幫助您 – 2013-04-22 11:14:15

+0

哇!完善!!你有我的意思! – 2013-04-22 11:14:43

+0

歡迎你:)! – 2013-04-22 11:15:13

2

嘗試:

SELECT * 
FROM fruits 
WHERE (id < 6) 
AND NOT (name = 'Apple' AND country = 'china') 

或者:

SELECT * 
FROM fruits 
WHERE (id < 6) 
AND id NOT IN (SELECT id 
       FROM fruits 
       WHERE name = 'Apple' 
       AND country = 'china') 
+0

已更新的答案。 – CloudyMarble 2013-04-22 11:15:34