我是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 ||
答案 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
更改ANDAND并不意味着:
我想要所有打篮球的孩子和所有打长曲棍球的孩子。
这意味着我想要所有玩曲棍球和篮球的孩子。
使用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。