2

我有一个基本查询用于进行一些测试,我希望得到一些关于我的结果是否正常的反馈。我确实从大约 100 条记录中交叉检查了我的结果,一切似乎都很好,但我正在浏览大约一百万条记录,我想确保我的结果是准确的。

这是我通过 while() 循环运行的基本查询:

    ... OR $row['last_action_txt'] == 'AUTO REC OK' 
    OR $row['action_txt'] == 'MAINT OK'
    OR $row['action_txt'] == 'LASTATUS OK' 
    OR $row['action_txt'] == 'ACCT LEAD OK' 
    AND $row['disp_txt'] == 'ACTIVE') { ...  

AND 是否至少需要其他 OR 之一才能为真?

4

2 回答 2

4

您的代码相当于:

... OR $row['last_action_txt'] == 'AUTO REC OK' 
OR $row['action_txt'] == 'MAINT OK'
OR $row['action_txt'] == 'LASTATUS OK' 
OR ($row['action_txt'] == 'ACCT LEAD OK' AND $row['disp_txt'] == 'ACTIVE')) { ...  

AND仅应用于最接近的OR。这是由于运算符的优先AND

于 2013-03-16T23:06:27.747 回答
1

在组合 ands 和 ors 时,您可能需要添加一些括号以确保获得正确的结果。如果您希望上述内容至少需要一个“或”ed 值,那么您需要在您正在 ORing 的所有术语周围加上括号。

if( ($row['last_action_txt'] == 'AUTO REC OK' 
OR $row['action_txt'] == 'MAINT OK'
OR $row['action_txt'] == 'LASTATUS OK' 
OR $row['action_txt'] == 'ACCT LEAD OK') 
AND $row['disp_txt'] == 'ACTIVE') { ...  

放置括号的位置将影响真假值如何确定结果。

于 2013-03-16T23:07:14.620 回答