SQL数据库表union和unionall的使用和介绍
程序员文章站
2022-12-01 15:42:59
## 数据库表 ##
使用Mysql 5.7版本进行验证。
## sql查询 ##
UNION是将多个结果连接在一起,需要注意保持连接的结果列的数量需要保持相同。UNIO...
## 数据库表 ##
使用Mysql 5.7版本进行验证。
## sql查询 ##
UNION是将多个结果连接在一起,需要注意保持连接的结果列的数量需要保持相同。UNION会以第一个的列的名称进行返回结果,在使用的时候需要多加注意,例如:
SELECT grade,id,NAME FROM student UNION SELECT id,NAME,grade FROM student WHERE id < 2 ===============结果================== grade id name ------------------------------------ 10 1 Allen 90 2 Lol 50 3 meil 89 4 lily 1 Allen 10
首先UNION查询
SELECT id,name,grade FROM student UNION SELECT id,name,grade FROM student ; ===============结果================== id name grade ------------------------------------ 1 Allen 10 2 Lol 90 3 meil 50 4 lily 89
使用UNION ALL
SELECT id,name,grade FROM student UNION ALL SELECT id,name,grade FROM student; ===============结果================== id name grade ------------------------------------ 1 Allen 10 2 Lol 90 3 meil 50 4 lily 89 1 Allen 10 2 Lol 90 3 meil 50 4 lily 89
从上面可以看出,UNION和UNION ALL的区别在于对重复结果的处理。
再来试一试select不同的顺序是否对查询结果有什么影响
一、 SELECT id,name,grade FROM student WHERE id < 2 UNION SELECT id,name,grade FROM student WHERE id > 1; ===============结果================== id name grade ------------------------------------ 1 Allen 10 2 Lol 90 3 meil 50 4 lily 89 二、 SELECT id,NAME,grade FROM student WHERE id > 1 UNION SELECT id,NAME,grade FROM student WHERE id < 2; ===============结果================== id name grade ------------------------------------ 2 Lol 90 3 meil 50 4 lily 89 1 Allen 10
结果是相同的,可见,sql语句的顺序是不影响结果的。但是两次结果的顺序却是不一样的。两次查询到的结果是第一条sql的查询结果在前,第二条的sql查询结果在后进行排序。
那么如何对结果进行自定义排序呢?
对结果可使用order by进行排序,但是order by需要在最后使用,在第一个SQL中使用,则会出现错误。
一、 SELECT id,NAME,grade FROM student order by id desc UNION SELECT id, NAME, grade FROM student WHERE id < 2; ===============结果================== [Err] 1221 - Incorrect usage of UNION and ORDER BY 二、 SELECT id,NAME,grade FROM student UNION SELECT id,NAME,grade FROM student WHERE id < 2 order by id desc; ===============结果================== id name grade ------------------------------------ 4 lily 89 3 meil 50 2 Lol 90 1 Allen 10 三、 SELECT id,NAME,grade FROM student UNION SELECT id,NAME,grade FROM student WHERE id < 2 ===============结果================== id name grade ------------------------------------ 1 Allen 10 2 Lol 90 3 meil 50 4 lily 89
UNION的自动排序规则暂未研究。
推荐阅读
-
sql 中 并集union和union all的使用区别
-
MySQL数据库的使用优势、数据库类型、常用的属性约束和常用存储引擎介绍
-
SQL数据库表union和unionall的使用和介绍
-
SQL语句的数据操作语言 (DML) 和 数据定义语言 (DDL)使用介绍
-
数据库SQL实战题:将employees表的所有员工的last_name和first_name拼接起来作为Name(教程)
-
SQL数据库基础知识、SQL中的数据类型、数据表管理、SQL中运算符和注释
-
sql Union和Union All的使用方法
-
Sql查询MySql数据库中的表名和描述表中字段(列)信息
-
SQL中UNION ALL 和UNION的区别及使用
-
使用SQL语句查询MySQL,SQLServer,Oracle所有数据库名和表名,字段名