但是第一个和第二个表的始终行数相同且订单完全相同!
表1:
ID Value1 Value2
10 1 100
10 2 200
20 1 250
30 1 150
30 2 125
表2:
ID Value 3
10 50
10 60
20 70
30 80
30 25
结果我希望第二个表与第一个表合并:
ID Value1 Value2 Value3
10 1 100 50
10 2 200 60
20 1 250 70
30 1 150 80
30 2 125 25
如何在SQL中执行此操作?是否可以使用简单的连接/联合,而无需创建新表或其他东西?
答案 0 :(得分:1)
通常,在没有JOIN
列的列的情况下,您不能简单地将两个表合并在一起。即使两个表具有相同数量的记录并且它们看起来有序,但实际上大多数RDBMS并不保证每个记录的存储或选择顺序。
您应该重新考虑数据库设计,并在2个表中包含主/外键。
答案 1 :(得分:1)
在TSQL中,您可以写为:
;with CTEtab1 as
(select
ID,
Value1,
Value2,
row_number() over (order by Id asc) as rownum
from tab1)
,CTEtab2 as
(select
ID,
Value3,
row_number() over (order by Id asc) as rownum
from tab2)
select T1.Id,T1.Value1,T1.Value2,T2.Value3
from
CTEtab1 T1
join CTEtab2 T2
on T1.rownum=T2.rownum
答案 2 :(得分:0)
您可以使用简单的连接语句
来完成此操作SELECT table1.ID, table1.Value1, table1.Value2, table2.Value3
FROM table1
INNER JOIN table2
ON table1.ID = table2.ID;
虽然我仍然建议改变表格,使它们具有正确连接它们的主键和外键。