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 | +---------------+---------+------+