从三列中选择不同的值,并使用MySQL在同一列中显示

为此,在单个MySQL查询中多次使用UNION。让我们首先创建一个表-

create table DemoTable
   -> (
   -> Value1 int,
   -> Value2 int,
   -> Value3 int
   -> );

使用插入命令在表中插入一些记录-

insert into DemoTable values(20,null,null);
insert into DemoTable values(20,null,null);
insert into DemoTable values(20,null,null);
insert into DemoTable values(10,null,null);
insert into DemoTable values(80,20,100);
insert into DemoTable values(10,null,null);

使用select语句显示表中的所有记录-

select *from DemoTable;

这将产生以下输出-

+--------+--------+--------+
| Value1 | Value2 | Value3 |
+--------+--------+--------+
|     20 |   NULL |   NULL |
|     20 |   NULL |   NULL |
|     20 |   NULL |   NULL |
|     10 |   NULL |   NULL |
|     80 |     20 |    100 |
|     10 |   NULL |   NULL |
+--------+--------+--------+
6 rows in set (0.00 sec)

以下是从3列中选择不同值到1的查询-

select *from
   -> (
   -> select Value1 as AllValue from DemoTable
   -> union
   -> select Value2 as AllValue from DemoTable
   -> union
   -> select Value3 as AllValue from DemoTable
   -> ) tbl where AllValue IS NOT NULL
   -> order by AllValue;

这将产生以下输出-

+----------+
| AllValue |
+----------+
|       10 |
|       20 |
|       80 |
|      100 |
+----------+
4 rows in set (0.00 sec)