服务器之家

服务器之家 > 正文

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

时间:2019-12-11 14:34     来源/作者:MYSQL教程网


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)

标签:

相关文章

热门资讯

玄元剑仙肉身有什么用 玄元剑仙肉身境界等级划分
玄元剑仙肉身有什么用 玄元剑仙肉身境界等级划分 2019-06-21
男生常说24816是什么意思?女生说13579是什么意思?
男生常说24816是什么意思?女生说13579是什么意思? 2019-09-17
配置IIS网站web服务器的安全策略配置解决方案
配置IIS网站web服务器的安全策略配置解决方案 2019-05-23
Nginx服务器究竟是怎么执行PHP项目
Nginx服务器究竟是怎么执行PHP项目 2019-05-24
华为nova5pro和p30pro哪个好 华为nova5pro和华为p30pro对比详情
华为nova5pro和p30pro哪个好 华为nova5pro和华为p30pro对比详情 2019-06-22
返回顶部