UNION要放置在两个查询语句之间。比如我们要查询公司所有员工(包括临时工)的标识号码、姓名、年龄信息。
查询正式员工信息的SQL语句如下:
SELECT Fnumber, Fname, Fage FROM T_Employee
而查询临时工信息的SQL语句如下:
SELECT Fnumber, Fname, Fage FROM T_TempEmployee
只要用UNION链接两个查询语句,就可以将两个查询结果集联合为一个结果集,SQL语句如下:
SELECT FNumber, Fname, Fage FROM T_Employee UNION SELECT FIdCardNumber, FName, FAge FROM T_TempEmployee
+---------------+---------+------+
| fnumber | fname | fage |
+---------------+---------+------+
| DEV001 | Tom | 25 |
| DEV002 | Jerry | 28 |
| DEV003 | Potter | NULL |
| HR001 | Jane | 23 |
| HR002 | Tina | 25 |
| IT001 | Smith | 28 |
| IT002 | NULL | 27 |
| SALES001 | Timmy | 25 |
| SALES002 | Stone | 35 |
| 1234567890121 | Sarani | 33 |
| 1234567890122 | Tom | 26 |
| 1234567890123 | Yalaha | 38 |
| 1234567890124 | Tina | 26 |
| 1234567890125 | Konkaya | 29 |
| 1234567890126 | Fotifa | 46 |
| 1234567890127 | James | 24 |
+---------------+---------+------+
可以看到UNION将两个独立的结果集联合成为了一个结果集。
UNION可以连接多个结果集,就像加号“+”可以连接多个数字一样简单,只要在每个结果集之间加入UNION即可,比如下面的SQL语句就连接了3个结果集:
SELECT FNumber, FName, FAge FROM T_Employee WHERE Fage < 30
UNION
SELECT FIdCardNumber, FName, FAge FROM T_TempEmployee WHERE Fage > 40
UNION
SELECT FIdCardNumber, FName, FAge FROM T_TempEmployee WHERE Fage < 30
+---------------+---------+------+
| FNumber | FName | FAge |
+---------------+---------+------+
| DEV001 | Tom | 25 |
| DEV002 | Jerry | 28 |
| HR001 | Jane | 23 |
| HR002 | Tina | 25 |
| IT001 | Smith | 28 |
| IT002 | NULL | 27 |
| SALES001 | Timmy | 25 |
| 1234567890126 | Fotifa | 46 |
| 1234567890122 | Tom | 26 |
| 1234567890124 | Tina | 26 |
| 1234567890125 | Konkaya | 29 |
| 1234567890127 | James | 24 |
+---------------+---------+------+