服务器之家:专注于服务器技术及软件下载分享
分类导航

Mysql|Sql Server|Oracle|Redis|

服务器之家 - 数据库 - Mysql - MySQL 查询结果取交集的实现方法

MySQL 查询结果取交集的实现方法

2019-12-11 14:34MYSQL教程网 Mysql

本文将详细介绍MySQL中如何实现以SQL查询返回的结果集取交集的实现方法,需要的朋友可以参考


MySQL中如何实现以下SQL查询 
(SELECT S.Name 
FROM STUDENT S, TRANSCRIPT T 
WHERE S.StudId = T.StudId AND T.CrsCode = 'CS305') 
INTERSECT 
(SELECT S.Name 
FROM STUDENT S, TRANSCRIPT T 
WHERE S.StudId = T.StudId AND T.CrsCode = 'CS315') 
请各位不吝赐教,小弟先谢过~ 
解: 
交集 
select a.* from 

SELECT S.Name 
FROM STUDENT S, TRANSCRIPT T 
WHERE S.StudId = T.StudId AND T.CrsCode = 'CS305' 
) as a 
cross join 

SELECT S.Name 
FROM STUDENT S, TRANSCRIPT T 
WHERE S.StudId = T.StudId AND T.CrsCode = 'CS315' 
) as b on a.Name = b.Name; 

2. 
SELECT * FROM ( 
SELECT DISTINCT col1 FROM t1 WHERE... 
UNION ALL 
SELECT DISTINCT col1 FROM t1 WHERE... 
) AS tbl 
GROUP BY tbl.col1 HAVING COUNT(*) = 2 

3. 
交集: 
SELECT * FROM table1 AS a JOIN table2 AS b ON a.name =b.name 
举例: 
表a: 
FieldA 
001 
002 
003 
表b: 
FieldA 
001 
002 
003 
004 
请教如何才能得出以下结果集,即表A, B行交集 
FieldA 
001 
002 
003 
答案:select a.FieldA from a inner join b on a.FieldA=b.FieldA 
差集: 
NOT IN 表示差集 
SELECT * FROM table1 WHERE name NOT IN (SELECT name FROM table2)

延伸 · 阅读

精彩推荐