如何从多个表中获取记录?

Posted

技术标签:

【中文标题】如何从多个表中获取记录?【英文标题】: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 如果您不介意,请提供一个更好的示例来解释您的要求! 【参考方案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。考虑到它是对原始问题的一个相当好的答案,因此被赞成。也就是说,这对于回答不清楚的问题是一种危险。

以上是关于如何从多个表中获取记录?的主要内容,如果未能解决你的问题,请参考以下文章

如何从PHP中的URL获取多个同名参数并将所有记录插入表中

如何高效地从多个表中查询子记录?

每月从多个表中获取记录

单个查询从具有不同列的多个表中获取记录

如何在 Asp.net MVC C# 中使用 Linq 从多个表中选择具有最大计数值的记录

SQL从日期范围内的同一表中的不同记录中获取多个项目的总和(ORACLE)