为什么MySql“或”运算符的行为类似于“和”运算符?
示例:
mysql>SELECT * FROM employee_tbl
->WHERE daily_typing_pages= 250 OR
->daily_typing_pages= 220 OR daily_typing_pages= 170;
+------+------+------------+--------------------+
| id | name | work_date | daily_typing_pages |
+------+------+------------+--------------------+
| 1 | John | 2007-01-24 | 250 |
| 2 | Ram | 2007-05-27 | 220 |
| 3 | Jack | 2007-05-06 | 170 |
| 4 | Jill | 2007-04-06 | 220 |
+------+------+------------+--------------------+
为什么选择所有3条记录。它不应该返回第一场比赛并完成吗?我现在的想法告诉我,“和”运算符本质上应该返回所有3行。这种行为与PHP之类的编程语言不同。对官方文档的任何引用都会有所帮助,或者链接到OR
和AND
工作也会有所帮助。
答案 0 :(得分:2)
不,只是像这样大声朗读查询。
如果每日打字页面为250,或者每日打字页面为220,或者每日打字页面为170,我想要员工表中的所有内容。
如果你告诉我给你7-11的所有饮料,橙色,蓝色或绿色。我带回你所有的饮料。
如果要限制,则需要明确说明:
SELECT * FROM employee_tbl
->WHERE daily_typing_pages= 250 OR
->daily_typing_pages= 220 OR daily_typing_pages= 170 LIMIT 1;
答案 1 :(得分:1)
所有三条记录都符合您在WHERE
语句中设置的条件,因为这些行的daily_typing_pages
值为250,220,或 170.换句话说,任何将返回匹配任何这些值的行。
如果您使用了AND
无,则会返回这些行,因为它们都没有值为250 和 220 和 170。