我想从table1中选择最后一条记录并插入另一张表。这是我的查询。
Insert into table2 values(select top 1 col1,col2 from table1 order by id desc).
我知道要将值添加到表中,需要在cotation.But在哪里添加?
答案 0 :(得分:2)
在SQL中,基本上有两种方法可以将数据插入表中:一种是一次插入一行,另一种是一次插入多行。让我们分别看看每个人:
INSERT INTO table_name (column1, column2, ...)
VALUES ('value1', 'value2', ...)
第二种类型的INSERT INTO允许我们在表中插入多行。与前面的示例不同,我们通过为所有列指定其值来插入单行,现在我们使用SELECT语句来指定要插入表中的数据。如果您在考虑这是否意味着您正在使用其他表中的信息,那么您是对的。语法如下:
INSERT INTO table1 (column1, column2, ...)
SELECT t2.column3, t2.column4, ...
FROM table2 t2
所以,在你的情况下,你可以这样做:
Insert into table2
select top 1 t1.col1,t1.col2 from table1 t1 order by id desc
或者你可以使用这样的语法:
declare @col1 type_of_col1, @col2 type_of_col2
select top 1 @col1 = t1.col1, @col2 = t1.col2 from table1 t1 order by id desc
Insert into table2 values(@col1, @col2)
当然,假设列数据类型匹配,这一切都有效。
答案 1 :(得分:2)
您可以选择文字来填写table1
无法提供的其他列,如下所示:
insert into table2 (col_a, col_b, col_c, col_d)
select top 1 col1, col2, 'foo', 'bar'
from table1
order by id desc
列列表中未列出的任何列都将获得默认值,如果未定义默认值,则为null
。
所选列的数量和类型必须与插入列列表中的列数和类型相匹配。