MySql或语句在功能上没有意义

时间:2014-03-24 22:19:07

标签: php mysql

为什么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之类的编程语言不同。对官方文档的任何引用都会有所帮助,或者链接到ORAND工作也会有所帮助。

2 个答案:

答案 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。