如何连接两个表中具有相同列名但行值不同的两个 SELECT 查询

问题描述 投票:0回答:3

我从 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 查询。

提前谢谢您。

sql sql-server logic
3个回答
4
投票
    SELECT Number, Name, Date FROM table1
    UNION ALL
    SELECT Number, Name, Date FROM table2

1
投票

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

UNION ALL 示例:

SELECT column1 AS datacheck from table1 
  UNION ALL
SELECT column1 AS datacheck from table2

结果:

+-----------+
| datacheck |
+-----------+
|   data2   |
|   data2   |
+-----------+

0
投票

对于查询中带有 WHERE 语句的情况。这是一个例子:

SELECT Number, Name, Date FROM table1
UNION ALL
SELECT Number, Name, Date FROM table2
WHERE Number = 1;

需要注意的是,查询末尾只有一个 WHERE 语句。 如果您在查询中加入其他表,它会变得更加复杂。

© www.soinside.com 2019 - 2024. All rights reserved.