如何在MySQL中使用union和order by子句?

Union是MySQL中的一种运算符。我们可以对此使用ORDER BY来过滤记录。如果要从多个表中选择一个接一个的行,或者从一个表中选择多个行的集合作为一个结果集,请使用UNION。

让我们来看一个例子。

创建第一个表

mysql> create table UnionDemo1
   -> (
   -> id int
   -> );

将记录插入第一个表。

mysql> insert into UnionDemo1 values(1),(4),(10);
Records: 3  Duplicates: 0  Warnings: 0

显示所有记录。

mysql> select *from UnionDemo1;

以下是显示所有记录的输出。

+------+
| id   |
+------+
|    1 |
|    4 |
|   10 |
+------+
3 rows in set (0.00 sec)

让我们创建第二个表。

mysql> create table UnionDemo2
   -> (
   -> id int
   -> );

将记录插入第二个表。

mysql> insert into UnionDemo2 values(2),(3),(5),(6),(7),(8),(9);
Records: 7  Duplicates: 0  Warnings: 0

显示所有记录。

mysql> select *from UnionDemo2;

这是输出。

+------+
| id   |
+------+
|    2 |
|    3 |
|    5 |
|    6 |
|    7 |
|    8 |
|    9 |
+------+
7 rows in set (0.00 sec)

现在让我们看一下将UNION与Order by一起应用的查询。

mysql> select id from UnionDemo1
   -> union
   -> select id from UnionDemo2
   -> order by id desc;

以下是输出。

+------+
| id   |
+------+
|   10 |
|    9 |
|    8 |
|    7 |
|    6 |
|    5 |
|    4 |
|    3 |
|    2 |
|    1 |
+------+
10 rows in set (0.05 sec)