mysql WHERE XXX = ZZZ和XXX = YYY

时间:2011-04-20 12:52:29

标签: mysql where in-clause where-in

我是mySql的新手,我正在尝试使用来自其他几个表的数据从一列进行过滤查询。例如,我可以在体育课上拉出一张名字表,一张他们的标记表,以及一张体育表。

我可以使用

查询此数据库

WHERE beta.sport = 'basketball';拉动所有的beta id用于篮球,并有效地吸引所有打篮球的孩子。现在我想找到所有打篮球和Lacrosee的孩子。

WHERE beta.sport = 'basketball' AND beta.sport = 'lacrosse';

问题是查询执行正常,但返回零结果。我知道通过手动查看我的数据,有些孩子会玩篮球和长曲棍球。你如何过滤那些同时打篮球和长曲棍球的孩子?或者返回玩长曲棍球或篮球的孩子。我只想让那些同时参加比赛的孩子回归,我对体育名单的唯一访问权限来自这一个表格。

TABLE beta

beta_id - sport ||
1  - basketball ||
2  - lacrosse ||
3  - football ||
4  - basketball ||

4 个答案:

答案 0 :(得分:4)

SELECT  *
FROM    names n
WHERE   (
        SELECT  COUNT(*)
        FROM    beta b
        WHERE   b.sport IN ('basketball', 'lacrosse')
                AND b.name = n.id
        ) = 2

答案 1 :(得分:1)

您需要使用OR

更改AND

AND并不意味着:

我想要所有打篮球的孩子和所有打长曲棍球的孩子。

这意味着我想要所有玩曲棍球和篮球的孩子。

使用OR时习惯将条件包装在括号中

WHERE(beta.sport ='basketball'OR beta.sport ='lacrosse')

答案 2 :(得分:0)

“WHERE beta.sport ='basketball'AND beta.sport ='lacrosse';”这不能返回任何行,因为你要求beta.sport同时是篮球和长曲棍球...尝试OR ...在哪里beta.sport ='basketball'OR beta.sport ='lacrosse';

您可以尝试两者的子选择......

select * from sportsTable 
where itemID in 
(select itemID from sportsTable WHERE beta.sport = 'basketball') 
and itemID in 
(select itemID from sportsTable WHERE beta.sport = 'lacrosse') 

答案 3 :(得分:0)

WHERE BETA.SPORT = 'BASKETBALL' OR BETA.SPORT = 'LACROSSE'

注意de OR,而不是AND。