Sql 如何将一组指定列的所有行从一个表插入到另一个表中

Sql 如何将一组指定列的所有行从一个表插入到另一个表中,sql,sql-server,tsql,Sql,Sql Server,Tsql,SQL n00b正在尝试找出如何在不编写循环的情况下执行以下操作 我有两张像这样的桌子 First Second ================= ============================ Id | Name Id | FirstId | DisplayName ================= ============================ 1 |

SQL n00b正在尝试找出如何在不编写循环的情况下执行以下操作

我有两张像这样的桌子

      First                        Second
=================       ============================ 
 Id |   Name             Id | FirstId | DisplayName
=================       ============================
 1  |  'foo'            
-----------------
 2  |  'bar'
----------------
 3  |  'baz'
我需要一个查询,在
第二个
中为
第一个
中的每一行放置一行,如

      First                        Second
=================       ============================ 
 Id |   Name             Id | FirstId | DisplayName
=================       ============================
 1  |  'foo'             1  |   3     | 'bazness' 
-----------------       ----------------------------
 2  |  'bar'             2  |   1     | 'fooness'
----------------        ----------------------------
 3  |  'baz'             3  |   2     | 'barness'

因此公式是:对于
First
中的每一行
f
,在
Second
中添加一行
f.Id
作为
FirstID
f.Name+'ness'
作为
DisplayName

您只需要
插入。选择

insert into second (firstId, DisplayName)
    select id, name + 'ness'
    from first;
注意:这假设
second.id
声明为标识列。如果没有:

insert into second (id, firstId, DisplayName)
    select row_number() over (order by (select null)), id, name + 'ness'
    from first;