mysql求差集

发布于:2023-09-14 ⋅ 阅读:(81) ⋅ 点赞:(0)

mysql怎么求差集?

mysql如何查询两个字段数不同的表中数据不一致的记录

一般可用NOT EXISTS(非存在子句)或 LEFT JOIN左(右)连接后所产生空字段值来筛选两表的差集

classinfo表

student表

1、NOT EXISTS

not exists在比对字段有可利用的索引时,其运行效率是非常高,但是如果没有索引的情况下运行在大数据表时,其运行效率极差,这时应避免使用它

SELECT
	* 
FROM
	student a 
WHERE
	NOT EXISTS (SELECT 1 FROM classinfo b WHERE a.classid = b.classid);

2、LEFT JOIN

用左(右)连接来求差集,由于需要实施两表连接会导致笛卡尔效应其输出集的记录行可能会增多,

若果不是一对一或一对多,我们应该将多对多的情况处理成多对一后才进行连接,否则输出的记录集可能不正确

SELECT
	a.* 
FROM
	student a
	LEFT JOIN classinfo b ON a.classid = b.classid 
WHERE
	b.classid IS NULL;

 求差集的两种方法,有索引可利用时,not exists的效率要高于left join,反之left join效率更


网站公告

今日签到

点亮在社区的每一天
去签到