编写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;
以上方法仅供参考,如有不正确之处及更快的方法,请留言指出,谢谢!
SQL查询技巧:获取两张表间差异数据
本文介绍了在SQL中查找一张表中不存在于另一张表的数据的三种方法,包括NOT IN、LEFT JOIN和子查询。这些方法在数据量不同情况下有不同的效率表现,对于避免重复数据和提高查询速度具有实际指导意义。
615






