sql - 合并两个表而不破坏原始列的内容

标签 sql database union

我有如下表_A 和表_B,我如何创建一个 UNION 来生成类似表_C 的结果集,以便保留表_A 和表_B 中列的原始内容。

表_A:

ID    High_Level_Text
-------------------------
01    High Level Text One
02    High Level Text Two
03    High Level Text Thr

表_B:

ID    Key    Low_Level_Text
----------------------------------
01    001    Low Level Text 01/001
01    002    Low Level Text 01/002
01    003    Low Level Text 01/003
02    001    Low Level Text 02/001
03    002    Low Level Text 03/002

表_C:

ID    Key    High_Level_Text      Low_Level_Text
-------------------------------------------------------
01           High Level Text One
01    001                         Low Level Text 01/001
01    002                         Low Level Text 01/002
01    003                         Low Level Text 01/003
02           High Level Text Two
02    001                         Low Level Text 02/001
03           High Level Text Thr
03    002                         Low Level Text 03/002

在Table_C中,对于那些没有来自Table_A的原始数据的记录,High_Level_Text列的记录留空,与Table_B的Low_Level_Text和Key列相同

最佳答案

你可以这样做:

select a.id as "ID",
  null as "KEY",
  a.High_level_text as "High_level_text",
  null as "Low_Level_Text"
from table_a a
union
select b.id,
  b.key,
  null,
  b.Low_Level_Text
from table_b b
order by 1,  2

sqlfiddle demo

这会在第一个 select 中设置您想要的列(列名在 UNION 的第一个 select 中定义)。然后你在最后order by,这将影响完整的结果集。

关于sql - 合并两个表而不破坏原始列的内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19531220/

相关文章:

php - 在单个查询中合并到两个表以对数据进行排序

database - 如何将几何数据类型用于 postgres 表?

表示家庭、家庭和关系的数据库模型

sql - 奇怪的 MS Access 联盟问题 : Union is not actually union

MySQL通过UPDATE/DELETE合并重复数据记录

mysql - SQL 慢速嵌套查询

sql - 获取任何给定日期的库存产品列表

mysql - 选择查询中的选择查询?

Java:使用mapDB,在数据库中写入会覆盖以前的条目

mysql - 如何使用单列联合进行排序后显示所有行数据