您的当前位置:首页正文

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

2020-11-09 来源:小奈知识网

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查询时间段的方法
  • 显示全文