如果存在表 B,则从表 B 中获取数据,否则保留表 A(在某些列之后)
Posted
技术标签:
【中文标题】如果存在表 B,则从表 B 中获取数据,否则保留表 A(在某些列之后)【英文标题】:Take data from Table B if it exists, else keep Table A (following some columns) 【发布时间】:2021-05-30 22:54:12 【问题描述】:我正在尝试实现示例中的内容,其想法是从表 B 中获取数据(如果存在),并且与列 col1=col3 和 col2=col4 相关。 不确定这是否可能使用 SQL
col1 col2
a b
c d
e f
Table B:
col3 col4
NULL x
y NULL
NULL NULL
Final_Table:
col1 col2
a x
y d
e f
【问题讨论】:
看看coalesce (db2tutorial.com/db2-basics/db2-coalesce) SQL 表不是电子表格,它是一个集合。表中没有 Nth 行,因此在没有任何通用唯一标识符之前,无法将 this 行的内容替换为 that 行的内容。 也许使用游标? 您的问题似乎假定了行的顺序。但是 SQL 表代表 无序 集。除非列指定排序,否则没有排序。 这个问题在关系数据库中没有意义。正如@astentx 所说,关系表不是电子表格。投票结束。 【参考方案1】:您需要有一个主键来比较两个或多个表。如果没有主键是不可能的。
【讨论】:
任何匹配规则都可以,即使它是一个排序人工键。以上是关于如果存在表 B,则从表 B 中获取数据,否则保留表 A(在某些列之后)的主要内容,如果未能解决你的问题,请参考以下文章
如果 Redshift 中存在表,则从表中删除行,否则忽略删除
Redshift:如果值存在,则从表 1 中获取值,否则从表 2 中提取
mysql - 如果不在另一个表中,则从一个表中选择,否则从另一个表中选择