我从 SQL Server 的 SELECT 查询 1 中得到了一个表,如下所示:
数字 | 姓名 | 日期 |
---|---|---|
21 | 姓名1 | 2004年3月20日 |
25 | 姓名2 | 2005年6月26日 |
23 | 姓名3 | 2005年6月26日 |
24 | 姓名4 | 2012年4月22日 |
我从 SQL Server 的 SELECT 查询 2 中得到了一个表,如下所示:
数字 | 姓名 | 日期 |
---|---|---|
30 | 姓名10 | 2064年3月20日 |
30 | 姓名10 | 2035年6月26日 |
35 | 姓名30 | 2025年6月26日 |
36 | 姓名40 | 2042年4月22日 |
我想将这些 SELECT 查询加入到一个 SELECT 查询中,如下所示:
数字 | 姓名 | 日期 |
---|---|---|
21 | 姓名1 | 2004年3月20日 |
25 | 姓名2 | 2005年6月26日 |
23 | 姓名3 | 2005年6月26日 |
24 | 姓名4 | 2012年4月22日 |
30 | 姓名10 | 2064年3月20日 |
30 | 姓名10 | 2035年6月26日 |
35 | 姓名30 | 2025年6月26日 |
36 | 姓名40 | 2042年4月22日 |
我尝试过这样的:
SELECT * FROM ( SELECT Number,Name,Date FROM table1 ) t1
INNER JOIN ( SELECT Number, Name, Date FROM table2) t2
ON t1.number = t2.number
但是它不起作用,这不是我想要加入的实际表。
基本上我想加入两个具有相同列名但没有共同值的 SELECT 查询。 我想使用连接表中的 SELECT 查询。
提前谢谢您。
SELECT Number, Name, Date FROM table1
UNION ALL
SELECT Number, Name, Date FROM table2
UNION
和 UNION ALL
是用于连接 2 个或更多结果集的 SQL 运算符。这允许我们编写多个 SELECT
语句,检索所需的结果,然后将它们组合成最终的统一集。
UNION
和UNION ALL
之间的主要区别是:
UNION:只保留唯一的记录
UNION ALL:保留所有记录,包括重复项
SELECT column1 AS datacheck from table1
UNION
SELECT column1 AS datacheck from table2
结果:
+-----------+
| datacheck |
+-----------+
| data2 |
+-----------+
SELECT column1 AS datacheck from table1
UNION ALL
SELECT column1 AS datacheck from table2
结果:
+-----------+
| datacheck |
+-----------+
| data2 |
| data2 |
+-----------+
对于查询中带有 WHERE 语句的情况。这是一个例子:
SELECT Number, Name, Date FROM table1
UNION ALL
SELECT Number, Name, Date FROM table2
WHERE Number = 1;
需要注意的是,查询末尾只有一个 WHERE 语句。 如果您在查询中加入其他表,它会变得更加复杂。