sql集合查询

并UNION

查询计算机科学系的学生及年龄小于 19 岁的学生

方法一:

SELECT *
FROM student
WHERE Sdept='CS' OR Sage<19;

sql集合查询

方法二:

SELECT *
FROM student
WHERE Sdept='CS'
UNION
SELECT *
FROM student
WHERE Sage<19;

sql集合查询

  • UNION

    自动取出重复元素

  • UNION ALL

    保留重复元素

查询选修了课程 1 或者选修了课程 2 的学生

SELECT Sno 
FROM sc
WHERE Cno='1'
UNION
SELECT Sno
FROM sc
WHERE Cno='2';

sql集合查询

交INTERSECT

查询计算机科学系的学生与年龄不大于 19 岁的学生的交集

mysql不支持集合交集查询

SELECT *
FROM student
WHERE Sdept='CS'
INTERSECT
SELECT *
FROM student
WHERE Sage<=19;

实际可以用WHERE语句中AND条件实现

SELECT *
FROM student
WHERE Sdept='CS' AND Sage<=19;

sql集合查询

查询选修课程 1 的学生集合与选修课程 2 的学生集合的交集

SELECT Sno
FROM sc
WHERE Cno='1'
INTERSECT
SELECT Sno
FROM sc
WHERE Cno='2';

实际是查询既选择修了课程1又选修课程2的学生

SELECT Sno
FROM sc
WHERE Cno='1' AND Sno IN (
	SELECT Sno
	FROM sc
	WHERE Cno='2'
);

sql集合查询

差EXCEPT

查询计算机科学系的学生与年龄不大于 19 岁的 学生的差集

SELECT *
FROM student
WHERE Sdept='CS'
EXCEPT
SELECT *
FROM student
WHERE Sage<=19;

实际上是查询计算机系中年龄大于19岁的学生

SELECT *
FROM student
WHERE Sdept='CS' AND Sage>19;

sql集合查询

上一篇:v-model结合select


下一篇:MFC定时器