2013-04-22 89 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