复合查询
复合查询
通过UNION,可以组合多条SELECT语句,并且将它们的结果组合成一个结果集返回,就叫做复合查询。
UNION必须由两条或两条以上的SELECT语句组成,语句之间用关键字UNION分隔。
UNION中的每个查询必须包含相同的列、表达式或聚合函数,不过,各个列不需要以相同的次序列出。
Students表:
| id | class_id | name | gender | score |
| --- | -------- | ---- | ------ | ----- |
| 1 | 1 | 小明 | M | 90 |
| 2 | 1 | 小红 | F | 95 |
| 3 | 1 | 小军 | M | 88 |
| 4 | 1 | 小米 | F | 73 |
| 5 | 2 | 小白 | F | 81 |
| 6 | 2 | 小兵 | M | 55 |
| 7 | 2 | 小林 | M | 85 |
| 8 | 3 | 小新 | F | 91 |
| 9 | 3 | 小王 | M | 89 |
| 10 | 3 | 小丽 | F | 88 |
SELECT
name,
score
FROM
Students
WHERE
score > 90
UNION
SELECT
name,
score
FROM
Students
WHERE
name = '小兵';
| name | score |
|------|-------|
| 小兵 | 55 |
| 小红 | 95 |
| 小新 | 91 |
这条语句由两条SELECT语句组成,之间用UNION关键字分隔,最终返回一个查询结果集。
UNION和UNION ALL
默认情况下,UNION会从查询结果集中自动去除重复的行。
SELECT
name,
score
FROM
Students
WHERE
score > 90
UNION
SELECT
name,
score
FROM
Students
WHERE
name = '小红';
| name | score |
|------|-------|
| 小红 | 95 |
| 小新 | 91 |
如果想返回所有的匹配行,可使用UNION ALL而不是UNION。
SELECT
name,
score
FROM
Students
WHERE
score > 90
UNION ALL
SELECT
name,
score
FROM
Students
WHERE
name = '小红';
| name | score |
|------|-------|
| 小红 | 95 |
| 小新 | 91 |
| 小红 | 95 |
点击查看更多内容
为 TA 点赞
评论
共同学习,写下你的评论
评论加载中...
作者其他优质文章
正在加载中
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦