【问题标题】:How to Join two SELECT queries having same column names but different row values in both tables如何连接两个表中具有相同列名但行值不同的两个 SELECT 查询
【发布时间】:2021-11-30 13:09:36
【问题描述】:

我从 SQL Server 的 SELECT Query 1 中获得了如下表:

NUMBER NAME Date
21 Name1 20.03.2004
25 Name2 26.06.2005
23 Name3 26.06.2005
24 Name4 22.04.2012

我从 SQL Server 的 SELECT 查询 2 中获得了如下表:

NUMBER NAME Date
30 Name10 20.03.2064
30 Name10 26.06.2035
35 Name30 26.06.2025
36 Name40 22.04.2042

我想将这些 SELECT 查询加入到一个 SELECT 查询中,如下所示:

NUMBER NAME Date
21 Name1 20.03.2004
25 Name2 26.06.2005
23 Name3 26.06.2005
24 Name4 22.04.2012
30 Name10 20.03.2064
30 Name10 26.06.2035
35 Name30 26.06.2025
36 Name40 22.04.2042

我试过这样:

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

提前谢谢你。

【问题讨论】:

  • 试试UNION就像这样Query1 UNION Query2;
  • 或者UNION ALL

标签: sql sql-server logic


【解决方案1】:
    SELECT Number, Name, Date FROM table1
    UNION ALL
    SELECT Number, Name, Date FROM table2

【讨论】:

    【解决方案2】:

    UNIONUNION ALL 是用于连接 2 个或更多结果集的 SQL 运算符。这使我们可以编写多个SELECT 语句,检索所需的结果,然后将它们组合成一个最终的统一集合。

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

    【讨论】:

      猜你喜欢
      • 2021-07-29
      • 1970-01-01
      • 1970-01-01
      • 2021-11-25
      • 2011-04-07
      • 2021-12-05
      • 2022-01-11
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多