开发喜欢用not exists 或者 exists 来判最新项目中老有研发写 not exist 来 判断A表 不存在B表的记录,这种写法在mysql中比较低效。需要改为左连接。
SELECT t1.* FROM T1 LEFT JOIN t2
ON t1.acct_no = t2..acct_no AND t2.code = '0100'
WHeRE T1.xxx = 'SUCCESS'
AND t1.xxxx = '0100'
AND t2.id IS NULL;
注意上述语句中,在左连接后面有一个 and 条件,表明 是把右表先筛选,再用结果集来进行连接。
如果and 列在where处,则是先联结,后从连接的结果来进行筛选。
两者在结果上是可能出现差异的,日常开发时要注意这一点。
网友评论