我需要在table2中插入表1的ID。问题在于表1中的顺序行没有顺序Id。 (有人擦除了一些行,因此连续行没有顺序ID)
执行select * from table 1
会导致:
表1
Id Value1
------------
2 X
4 Y
10 Z
12 XYZ
14 ZD
121 XD
122 ZS
------------
表2的理想结果是:
Id Value1 Value2 Date
-----------------------------------
1 67 2 2018-05-15
2 67 4 2018-05-15
3 67 10 2018-05-15
4 67 12 2018-05-15
5 67 14 2018-05-15
6 67 121 2018-05-15
7 67 122 2018-05-15
------------------------------------
在表2中插入值的代码。我只需要表1来复制正确的Id。
declare @value int
set @value=(select count(*) from table1)
while @value>0
begin
insert into (table2)
values ('67',@HOW_TO_RETRIEVE THE CORRECT ID from TABLE 1?,getdate())
set @value=@value-1
end
当然使用@value它不起作用,我试图在值内使用select子句但无济于事。谢谢。
答案 0 :(得分:2)
你不想为这种类型的东西使用循环。您可以非常轻松地在插入中使用select语句。这样的东西适合你。这假设table2中的Id是一个标识。如果不是,我们可以利用ROW_NUMBER()生成顺序值。
insert table2
(
Value1
, Value2
, [Date]
)
select '67'
, Id
, getdate()
from Table1
答案 1 :(得分:2)
alter table2 add id bigint identity(1,1)
;
insert table2 (Value1, Value2, Date)
select '67', ID ,getdate()
from TABLE1
;
答案 2 :(得分:1)
insert into table2 (value1, value2, [Date])
select 67, Id, getdate() from table1;