前置条件 :
mysql
查询存在A表而不在B表中的 记录
方法一(仅适用单个字段)
使用 not in ,容易理解,效率低
select A.ID from A where A.ID not in (select ID from B)
方法二(适用多个字段匹配)
使用 left join…on… , “B.ID isnull” 表示左连接之后在B.ID 字段为 null的记录
select * from A left join B on A.ID=B.ID where B.ID is null
eg: select * from tb_user_apps tua left join tb_user_apps_related tar on tua.id= tar.app_id where tar.app_id is null
方法三(适用多个字段匹配)
select * from A where (select count(1) as num from B where A.ID = B.ID) = 0
eg:
select * from tb_user_apps tua where (select count(1) as num from tb_user_apps_related tar where tua.id= tar.app_id) = 0
方法四(适用多个字段匹配) 使用这个
select * from A where not exists(select 1 from B where A.ID=B.ID)
eg :
select * from tb_user_apps tua where not exists(select 1 from tb_user_apps_related tar
where tua.id= tar.app_id)