【问题标题】:How to get the records from multiple tables?如何从多个表中获取记录?
【发布时间】:2014-01-23 21:27:38
【问题描述】:

您好,我是数据库新手,我正在尝试从多个表中获取记录,但根据选择,以下是我的表

 Table1

  Column1      Column2
    1             10
    2             25 
    3             23
    4             15
    5              7


  Table2

  Column1      Column2
    2             15 
    3             13
    5             17

  Table3

  Column1      Column2
    2             45

结果表应该有类似的记录

       Column1      Column2
         1             10
         2             45
         3             13
         4             15
         5             17

我正在尝试但还没有得到输出。任何帮助或制定此输出的方向都会有很大帮助。


更新

我想要的是从 table1 中获取所有行,然后如果 table2 包含匹配记录,那么它将从结果集中删除匹配记录并添加 table2 匹配记录,然后 table3 重复相同的记录。

【问题讨论】:

  • @Curiosity- 所以你想要每个 column1 值的 column2 最大值对吗?
  • @FathahRehmanP 没有。我已经更新了问题,请看一下
  • 您需要定义匹配。所有列都包含素数? Column2 在不同的表中可以被 Column1 整除吗? Column1 值是否相等?
  • @HABO 数据是虚拟随机插入的,表格之间的column1是公共字段
  • @Curiosity 如果您不介意,请提供一个更好的示例来解释您的要求!

标签: sql sql-server sql-server-2008 join outer-join


【解决方案1】:
SELECT t1.column1, COALESCE(t3.column2,t2.column2,t1.column2) 
FROM t1 
LEFT JOIN t2 on t1.column1=t2.column1
LEFT JOIN t3 on t1.column1=t3.column1

【讨论】:

    【解决方案2】:

    请使用下面的代码并尝试

    select * from table1 where column1 not in  ( select column1 from table2 union select column1 from table3)
    union 
    select  * from table2 where column1 not in  (select column1 from table3)
    union
    select  * from table3
    

    【讨论】:

      【解决方案3】:
      select x.col1,max(x.col2) from (
      
      select * from #t1
      union
      select * from #t2
      union 
      select * from #t3 
      )x
      group by x.col1
      

      see it in action

      【讨论】:

      • 这不是关于获取最大值,而是我希望 table2 将覆盖 table1 中的所有匹配记录,然后 table3 将覆盖结果集中的所有匹配记录
      • 通过获取最大值,它只会获取第 2 列最大值的记录,这不是我想要的。让我更新问题,以便您理解它
      • 我没有对此投反对票,我建议其他人也不要,因为在 OP 更改问题之前已回答。在当时,这是合理的。
      • 同意,@dan。考虑到它是对原始问题的一个相当好的答案,因此被赞成。也就是说,这对于回答不清楚的问题是一种危险。
      猜你喜欢
      • 2022-10-04
      • 2016-08-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-08-31
      • 2021-11-26
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多