将行复制并粘贴到具有不同值的相同SQL表中

时间:2012-03-12 18:15:15

标签: sql sql-server tsql

我在大学写了一份居民住房申请。在其中一个表(房间)中,我列出了所有房间及其当前/最大入住率。现在,我添加了一个名为“semester”的新列,并将所有现有行设置为具有“fall”的学期值。现在我想将所有这些行复制并粘贴到表中,但是将学期值更改为“spring”。结果应该是我开始的行数的两倍 - 一半是学期价值下降,一半是下降。想知道实现这个目标的最佳方法是什么?

4 个答案:

答案 0 :(得分:22)

INSERT INTO rooms
(roomname, current_occupancy, max_occupancy, semester)
SELECT roomname, current_occupancy, max_occupancy,'spring'
FROM rooms
WHERE [semester]='fall'

(假设您的房间和占用列的名称)

答案 1 :(得分:5)

使用临时表,无论涉及多少列,都可以简化;

SELECT * INTO #ROOMS FROM ROOMS;
UPDATE #ROOMS SET SEMESTER='spring';
INSERT INTO ROOMS SELECT * FROM #ROOMS;

答案 2 :(得分:4)

Insert Into Rooms
     Select col1, col2, col3, 'Spring' as Semester -- select each column in order except 'Semester', pass it in literally as 'Spring'
     From rooms where
     Semester = 'Fall'

答案 3 :(得分:1)

如果您只是想在Sql Server Management Studio中尝试这样做,您可以复制表,运行Update命令并将学期设置为弹簧克隆表,然后使用向导附加克隆的数据表到现有表。

如果您了解编程语言,则可以提取所有数据,修改学期,然后将数据插入现有表格。

注意:其他答案是实现这一目标的更好方法。