編寫sql語句中,經常需要編寫獲取一張數據表中不存在與另一張表的數據,相關編寫方法如下:
方法1: 使用not in ,效率低下,在數據較小的情況下可以采用如下編寫
SELECT * FROM a WHERE 1=1 AND a.Id NOT IN( SELECT Id FROM B WHERE B.IsDeleted=0 GROUP BY B.Id );
方法2:使用left join 較第一種方法快
SELECT * FROM a LEFT JOIN b ON a.Id=b.Id WHERE 1=1 AND b.Id IS NULL;
方法3:速度最快,在應用到插入數據時,可在避免重復插入相同數據時又可以獲取較快的時效,,速度比上兩個快非常多
SELECT * FROM a WHERE 1=1 AND ( SELECT COUNT(1) FROM b WHERE a.Id=b.Id )=0;
以上方法僅供參考,如有不正確之處及更快的方法,請留言指出,謝謝!