MySQL WHERE OR:如果第一个条件为真,则执行第二个条件?

时间:2017-02-26 15:11:31

标签: mysql

还有一些问题,但尽管有所有答案,我仍然没有理解这一点。问题是, 在这样的查询中:

select * from table WHERE userid = userid OR username = username

如果发现第一个条件为真, userid = userid ,mysql跟着测试第二个条件 OR username = username ???或不? 我想是的,但我想知道,因为我找不到任何文件的答案。 谢谢。

1 个答案:

答案 0 :(得分:3)

没有"第一个条件"和"第二个条件"。 MySQL可以选择以任何顺序执行条件。 SQL查询表示结果集,而不是特定的处理步骤。

也就是说,如果多个条件通过Loggervar cname=document.body.className.split("-"); var catNumber = cname[cname.length-1]; 连接,那么MySQL将"短路"评估并在知道答案时停止。

文档在这一点上有点弱(它没有完全解释)。因此,MySQL(与几乎所有其他SQL数据库和编译器不同)可能在可能的情况下不会短路。 Here是一个博客,作者实际上对此进行了测试;所以至少有一个实例,编译器似乎会使评估短路。