编写sql语句中,经常需要编写获取一张数据表中不存在与另一张表的数据,相关编写方法如下:

 方法1: 使用not in ,效率低下,在数据较小的情况下可以采用如下编写   

  1. SELECT
  2. *
  3. FROM a
  4. WHERE 1=1
  5. AND a.Id NOT IN(
  6. SELECT
  7. Id
  8. FROM
  9. B
  10. WHERE
  11. B.IsDeleted=0
  12. GROUP BY B.Id
  13. );

 

 方法2:使用left join  较第一种方法快

  1. SELECT
  2. *
  3. FROM a
  4. LEFT JOIN b ON a.Id=b.Id
  5. WHERE 1=1
  6. AND b.Id IS NULL;

 方法3:速度最快,在应用到插入数据时,可在避免重复插入相同数据时又可以获取较快的时效,,速度比上两个快非常多

  1. SELECT
  2. *
  3. FROM a
  4. WHERE
  5. 1=1
  6. AND (
  7. SELECT
  8. COUNT(1)
  9. FROM b
  10. WHERE a.Id=b.Id
  11. )=0;

以上方法仅供参考,如有不正确之处及更快的方法,请留言指出,谢谢!

 

版权声明:本文为zty-Love原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/zty-Love/p/9894799.html