【问题标题】:Mysql - order of the "OR" operatorMysql - “OR”运算符的顺序
【发布时间】:2014-12-26 18:11:55
【问题描述】:

在一个大型查询中,我有

INNER JOIN file
ON ( file.file_id = temp_student_table.converted_file 
     OR file.file_id = temp_student_table.uploaded_file)

如果file.file_id = temp_student_table.converted_file 匹配,MySQL 会检查第二条语句吗?如果他们俩都返回匹配项会发生什么?它只考虑第一个语句吗?

【问题讨论】:

  • 没有。如果是OR并且第一个匹配,第二个就不必匹配了。
  • @fedorqui 所以如果他们都匹配,它只考虑第一个。对吗?
  • 为什么不测试一下看看呢?我不能超过一分钟。
  • @Strawberry 如果其中一个有副作用或错误,例如除以零,这很重要。

标签: mysql logic or-condition


【解决方案1】:

OR 条件中,它只会评估第一个条件并在它已经为真时退出。

OR 运算符有这种行为:

A | B | A OR B
0   0     0
0   1     1            0 = False
1   0     1            1 = True
1   1     1

这意味着A OR B 为真,除非 A 和 B 为假。为此,A OR B 将评估必要的最小值:如果 A 已经为真,则继续评估该条件是没有意义的。

【讨论】:

    【解决方案2】:

    由于您在这里使用OR 运算符,它会检查第一个条件。如果第一个语句匹配,则继续执行。第二个不需要在条件中匹配

    【讨论】:

      【解决方案3】:

      在Mysql中,OR会返回true:

      • 如果第一个操作数为真,则不会测试第二个操作数
      • 如果第一个操作数为假,第二个为真

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2022-01-19
        • 2015-07-08
        • 2017-03-14
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多