如何从多个表中获取记录?
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。考虑到它是对原始问题的一个相当好的答案,因此被赞成。也就是说,这对于回答不清楚的问题是一种危险。以上是关于如何从多个表中获取记录?的主要内容,如果未能解决你的问题,请参考以下文章