mysql 获取一张表中, 另一张表不存在的数据
编写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;
以上方法仅供参考,如有不正确之处及更快的方法,请留言指出,谢谢!