0

我有两张桌子,看起来像那样。“Value1”类似于第二个键,ID + Value1 = “Primary”键,但它不在表设置中,并且第二个表中缺少 Value1 字段,所以我无法加入它。

但是第一个和第二个表总是有相同数量的行和完全相同的顺序!

表格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 中做到这一点?是否可以使用简单的连接/联合,而无需创建新表或其他东西?

4

3 回答 3

1

一般来说,在没有要依据的列的情况下JOIN,不能简单地将两个表合并在一起。尽管两个表具有相同数量的记录并且它们看起来是有序的,但实际上大多数 RDBMS 不能保证每条记录的存储或选择顺序。

您应该重新考虑您的数据库设计,并在 2 个表中包含一个主键/外键。

于 2015-06-16T06:00:45.723 回答
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

Demo

于 2015-06-16T06:19:13.593 回答
0

你可以用一个简单的 join 语句来做到这一点

SELECT table1.ID, table1.Value1, table1.Value2, table2.Value3
FROM table1
INNER JOIN table2
ON table1.ID = table2.ID;

尽管我仍然建议更改表以使它们具有正确连接它们的主键和外键。

于 2015-06-16T06:20:31.813 回答