连接不同名称的表

iqxoj9l9  于 2021-06-19  发布在  Mysql
关注(0)|答案(3)|浏览(330)

正如你在下面看到的,我正在尝试合并两个表。这两个表显示的数据彼此有点不同,但没有太大的差异,我们无法连接它们。
为完整起见,我们将按表的颜色名称命名:
红色的table red 蓝色的table blue 从两个表中,我们将合并 ID s
red table,我们要合并 Nameblue table的 Titlered table,我们要合并 Prodblue table的 Itemred 表,我们将添加 Cost 我想知道我们是否可以连接这两个表并使用sql输出结果。换句话说,我不想创建一个全新的表,我只想使用一个查询来输出两个表的组合。

当我试着这样做的时候,我得到了这样的结果:

ID    Name    Prod    Cost    ID    Title    Item
0     asdf    item1   4.00    1     fdsa     item2
2     sdfg    item3   5.00    3     gfds     item4
4     dfgh    item5   4.00    5     hgfd     item6

但我想知道:

ID    Name    Item    Cost
0     asdf    item1   4.00
1     fdsa    item2
2     sdfg    item3   5.00
3     gfds    item4
4     dfgh    item5   4.00
5     hgfd    item6
tyu7yeag

tyu7yeag1#

select id, name, prod as item,cost from red_tbl UNION ALL select id, title as name, item, NULL as cost  from blue_tbl

选择“prod”时,将字段名更改为红色表格中的“item”,将“title”更改为蓝色表格中的“name”。选择表中不可用的空字段(此处为蓝色表中的成本字段),因为所选字段的联合编号必须相同。

14ifxucb

14ifxucb2#

应使用并集运算符

SELECT column_name(s) FROM table1 
UNION 
SELECT column_name(s) FROM table2;

规则:
union中的每个select语句必须具有相同的列数。这些列还必须具有相似的数据类型。每个select语句中的列的顺序也必须相同

zpgglvta

zpgglvta3#

你可以用 UNION ,以便合并多个select查询的结果。由于没有重复的机会,在这些多个select查询之间,我们可以使用 Union All . 我们需要确保两个select查询返回的列数相同。最终,我们可以根据 ID 使用 ORDER BY :

(SELECT ID, 
       Name, 
       Prod AS Item, 
       Cost 
FROM red_table) 

UNION ALL 

(SELECT ID, 
       Title AS Name, 
       Item, 
       '' AS Cost
FROM blue_table) 

ORDER BY ID ASC

相关问题