服务器之家

服务器之家 > 正文

MySQL不支持INTERSECT和MINUS及其替代方法

时间:2020-03-22 18:45     来源/作者:MYSQL教程网

Doing INTERSECT and MINUS in MySQL

Doing an INTERSECT

An INTERSECT is simply an inner join where we compare the tuples of one table with those of the other, and select those that appear in both while weeding out duplicates. So

复制代码 代码如下:


SELECT member_id, name FROM a
INTERSECT
SELECT member_id, name FROM b



can simply be rewritten to

复制代码 代码如下:


SELECT a.member_id, a.name
FROM a INNER JOIN b
USING (member_id, name)



Performing a MINUS
To transform the statement

复制代码 代码如下:


SELECT member_id, name FROM a
MINUS
SELECT member_id, name FROM b



into something that MySQL can process, we can utilize subqueries (available from MySQL 4.1 onward). The easy-to-understand transformation is:

复制代码 代码如下:


SELECT DISTINCT member_id, name
FROM a
WHERE (member_id, name) NOT IN
(SELECT member_id, name FROM table2);



Of course, to any long-time MySQL user, this is immediately obvious as the classical use-left-join-to-find-what-isn't-in-the-other-table:

复制代码 代码如下:


SELECT DISTINCT a.member_id, a.name
FROM a LEFT JOIN b USING (member_id, name)
WHERE b.member_id IS NULL

标签:

相关文章

热门资讯

玄元剑仙肉身有什么用 玄元剑仙肉身境界等级划分
玄元剑仙肉身有什么用 玄元剑仙肉身境界等级划分 2019-06-21
沙雕群名称大全2019精选 今年最火的微信群名沙雕有创意
沙雕群名称大全2019精选 今年最火的微信群名沙雕有创意 2019-07-07
男生常说24816是什么意思?女生说13579是什么意思?
男生常说24816是什么意思?女生说13579是什么意思? 2019-09-17
超A是什么意思 你好a表达的是什么
超A是什么意思 你好a表达的是什么 2019-06-06
华为nova5pro和p30pro哪个好 华为nova5pro和华为p30pro对比详情
华为nova5pro和p30pro哪个好 华为nova5pro和华为p30pro对比详情 2019-06-22
返回顶部