【问题标题】:Join two column with the same number of row加入具有相同行数的两列
【发布时间】:2009-06-08 09:43:47
【问题描述】:

我想将 2 个表合二为一。假设我有:

表1

ID       Name
1        A
2        B
3        C

表2

ID       Name
4        D
5        E
6        F

我想做Table3

Name1    Name2
A        D
B        E
C        F

如何在 SQL Server 中执行此操作?非常感谢任何帮助。

【问题讨论】:

    标签: sql sql-server join


    【解决方案1】:
    WITH    t1 AS
            (
            SELECT  a.*, ROW_NUMBER() OVER (ORDER BY id) AS rn
            FROM    table1 a
            ),
            t2 AS
            (
            SELECT  a.*, ROW_NUMBER() OVER (ORDER BY id) AS rn
            FROM    table2 a
            )
    SELECT  t1.name, t2.name
    FROM    t1
    JOIN    t2
    ON      t1.rn = t2.rn
    

    【讨论】:

      【解决方案2】:
      select t1.Name Name1, t2.Name Name2
      from Table1 t1, table2 t2
      where t1.ID = t2.ID
      

      select t1.Name Name1, t2.Name Name2
      from Table1 t1 join table2 t2
           on t1.ID = t2.ID
      

      【讨论】:

      • 如果没有列ID怎么办?
      • 如果没有 ID,这些表是如何关联的?什么标准确定 Name1 = A 对应于 Name2 = D?
      • 如果您没有 id,请使用 Quassnoi 的解决方案,并在 order by 子句中将 id 替换为表的主键。
      • 由于主键构成聚集索引,因此您在 Table1 中的行将与 Table2 中的行匹配
      猜你喜欢
      • 1970-01-01
      • 2014-06-05
      • 2022-01-23
      • 2019-12-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-02-21
      • 2020-01-23
      相关资源
      最近更新 更多