【问题标题】:How do i join all data in 1 col of a table2 to table1 whilst keeping non matching data in table1如何将表 2 的 1 列中的所有数据加入表 1,同时在表 1 中保留不匹配的数据
【发布时间】:2014-08-02 12:08:25
【问题描述】:

我正在尝试将表 2 中的信息连接到我的表 1,而不会丢失表 1 中的任何数据。我尝试过内连接、全外连接、左连接和右连接,但都带来了相同的结果 - 删除了一些 table1 数据行。

表 1

Col1, Col2, col3
1, mary, null
2, john, null
3, sally, 25
4, barry, 15

表 2

Col1, Col2
2, fireman, 1
3, office, 2
4, teacher, 3

想要的结果

col1, col2, col3, col4
1, mary, null, null
2, john, null, fireman
3, sally, 25, office
4, barry, 15, teacher

我得到了什么;

2, john, null, fireman
3, sally, 25, office
4, barry, 15, teacher

根据我的查询

Select col1, col2, col3 from table1 left join col2 on table1.col1=table2.col1 order by table2.col3 asc

【问题讨论】:

  • 我们解决了您的问题吗?
  • 你确实做到了。为不及时的回复道歉,我意外离线。我的问题是(我没有在上面的简化案例问题中显示)是我正在过滤一个对于某些行为空的 col,这使得我的左连接看起来不起作用。您的回答帮助我清楚地看到了问题,感谢磨坊

标签: sql-server join


【解决方案1】:
SELECT   T1.col1, 
         T1.col2, 
         T1.col3, 
         T2.col2 AS col4
FROM     Table1 T1
         LEFT JOIN Table2 T2
             ON T1.col1 = T2.col1 
ORDER BY T2.col2 ASC

Fiddle Demo

【讨论】:

    【解决方案2】:

    好的,我已经根据您想要的解决方案构建了它:

    SELECT t1.col1, t1.col2, t1.col3, t2.col2 AS col4 
    FROM t1
    LEFT JOIN t2 ON t1.col1 = t2.col1
    ORDER BY t2.col2 ASC
    

    SQLFiddle Demo

    您可以查看上面的小提琴。

    祝你好运!

    【讨论】:

      猜你喜欢
      • 2015-07-18
      • 2022-12-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-10-17
      • 2013-12-24
      • 2017-03-08
      相关资源
      最近更新 更多