首页 > 数据库 > MySQL > 正文

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

2024-07-24 12:49:00
字体:
来源:转载
供稿:网友
1
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)

您可能感兴趣的文章:

MySql 按时间段查询数据方法(实例说明)mysql如何查询某一时间段内没有卖出的商品mysql 按照时间段来获取数据的方法清空mysql 查询缓存的可行方法MySQL查询随机数据的4种方法和性能对比mysql随机查询若干条数据的方法MySql实现跨表查询的方法详解Mysql中分页查询的两个解决方法比较记录mysql性能查询过程的使用方法mysql嵌套查询和联表查询优化方法MySQL大表中重复字段的高效率查询方法MySql查询时间段的方法
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表