mysql and与or连用时遇到的坑
1,
SELECT *
FROM work_log_bbs_up
WHERE TYPE IS NULL OR TYPE = 0 OR TYPE = 1 OR TYPE = 2 AND is_del = 0
结果:1166
2,
SELECT *
FROM work_log_bbs_up
WHERE (TYPE IS NULL OR TYPE = 0 OR TYPE = 1 OR TYPE = 2) AND is_del = 0
结果:492
原因:mysql and 优先级比or高,sql 1 会首先计算TYPE = 2 AND is_del = 0然后与其他条件进行or比较。需要使用()包围起来,明确优先级,因为()优先级比and高。