目的:查询表A与表B的差集,其中A表数据多与B表数据。
1 表
构造表数据:user表与sys_user,取两表的差集,即查询出user表id为4和9两条数据。
1.1 user
1.2 sys_user
2 查询
2.1 LEFT JOIN
通过左连接合并数据,A LEFT JOIN B,A表中存在的数据,B表中不存在的数据使用NULL填充,查询语句如下:
SELECT
t1.id,t2.id
FROM
db_monkey_run.tb_user t1
LEFT JOIN
(SELECT
id
FROM
db_monkey_run.tb_sys_user) t2 ON t1.id = t2.id
查询结果如2.1所示。
2.2 差集
A表和B表取差集,即B表为NULL的对应的A表数据,通过LEFT JOIN后,使用条件为NULL判断,过滤出差集的数据,查询语句如下:
SELECT
t1.id
FROM
db_monkey_run.tb_user t1
LEFT JOIN
(SELECT
id
FROM
db_monkey_run.tb_sys_user) t2 ON t1.id = t2.id
WHERE
t2.id IS NULL;
查询结果如图2.2所示。
3 小结
LEFT JOIN拼接数据,通过NULL为过滤条件,查询两个表的差集。
|