为什么这些查询产生不同的结果?

时间:2011-11-17 09:46:34

标签: mysql

我已经运行了这两个看起来像是做同样事情的查询,但给出了不同的结果:

SELECT COUNT(stage1) AS total 
FROM progress_status 
WHERE stage1 = 3 
AND stage2 != 3 AND stage3 !=3 AND stage4 !=3 AND stage5 !=3;

# total = 90

SELECT COUNT(stage1) AS total 
FROM progress_status 
WHERE stage1 = 3 
AND (stage2,stage3,stage4,stage5) != (3,3,3,3)

# total = 314

3 个答案:

答案 0 :(得分:5)

第二个是:

AND (stage2 != 3 OR stage3 !=3 OR stage4 !=3 OR stage5 !=3);

答案 1 :(得分:3)

这是正常的:

  • 您的第一个查询要求所有阶段列与3
  • 不同
  • 您的第二个查询要求那些列不等于3的列, 所以,如果一个不同于3记录被采取! 此查询就像您在OR子句中使用WHERE一样。

答案 2 :(得分:2)

(stage2,stage3,stage4,stage5) != (3,3,3,3)

时,

stage2 != 3 OR stage3 !=3 OR stage4 !=3 OR stage5 !=3为真