尽管疯狂地移动了括号,但以下选择语句仍未返回正确的结果:SELECT * FROM Table A where (refId != <some refId> and date <= (now() - INTERVAL 10 DAY))
似乎AND条件由于某种原因而短路,这意味着如果refId
实际上等于所讨论的refId
,则日期无关紧要。该语句需要返回没有问题refId
的行,但仅当date
条件也匹配时才返回。
例如,我有很多refIds
,但是我想过滤掉其中一个,但前提是date
也在10天的期限之外。
Sample Data: Expected Results:
----------- -----------------
|id|refId| date | refId != 5 AND date <= (now() - INTERVAL 10 DAY)
|1 | 1 | 2018-2-10| Only row 1 should be returned since the
|2 | 5 | 2018-2-14| refId !=5 AND the date is <= 10 days ago.
|3 | 2 | 2018-2-20|
|4 | 5 | 2018-2-22|
|5 | 5 | 2018-2-12|
最佳答案
我认为您想要=
和or
:
SELECT *
FROM Table A
WHERE (refId = <some refId> OR date <= (now() - INTERVAL 10 DAY))