【发布时间】:2011-08-09 11:49:15
【问题描述】:
我是 mySql 的新手,我正在尝试使用来自其他几个表的数据从一列中进行过滤查询。例如,我可以拉出一张姓名表、一张他们在体育课上的分数表和一张运动表。
我可以使用
查询这个数据库WHERE beta.sport = 'basketball'; 提取篮球的所有 beta id,实际上是所有打篮球的孩子。现在我想找到所有打篮球和 Lacrosee 的孩子。
WHERE beta.sport = 'basketball' AND beta.sport = 'lacrosse';
问题是查询执行良好,但返回零结果。通过手动查看我的数据,我知道有些孩子会打篮球和长曲棍球。您如何过滤既打篮球又打长曲棍球的孩子? OR 返回玩长曲棍球或篮球的孩子。我只想返回同时玩这两种运动的孩子,而我对运动列表的唯一访问权限是来自这个单表测试版。
表测试版
beta_id - sport ||
1 - basketball ||
2 - lacrosse ||
3 - football ||
4 - basketball ||
【问题讨论】:
-
您的查询显示“篮球”和 beta.sport = '长曲棍球',但您在下一句中说“篮球和足球”。第二项运动是什么?
-
您在该查询中使用了曲棍球,您是指足球吗?基本上你可以选择使用 AND 或 OR。你也可以看看 IN。
-
除了 Quassnoi 之外的所有人都错过了似乎的重点。虽然 ccdpowell 在写一个简单的
AND时确实假设错了,但他不想要OR。当然,Quassnoi 的解决方案假设存在链接表并保存适当的信息,但它是迄今为止唯一给出正确方法的解决方案。
标签: mysql where in-clause where-in