工作中我们会遇到一个表的一列值需要进行整体更换为另一个表的某个字段的值,那么我们该如何处理呢?
![797fc156ae16576e7c4dbb832c28c4d9.png](https://i-blog.csdnimg.cn/blog_migrate/a6ef489d757f0573bae9d784da83c0d7.jpeg)
数据源
![87c3184b596b665bcac01fe599a7e857.png](https://i-blog.csdnimg.cn/blog_migrate/73ef9849e8b6691c045ad724cbab8106.jpeg)
Room表
![6ce61f4445f2bcb8497ebcd1bff5d64b.png](https://i-blog.csdnimg.cn/blog_migrate/252604d8f1cd6849870303be1cb90534.jpeg)
新的Room表
现将Room表的RoomTypeID列替换成Room_new表的RoomTypeID
- 方法一:直接修改
update Room set RoomTypeID = (select RoomTypeID from [Room_NEW] where [Description] = room.[Description])
查询结果如下图所示
![79c2283647c896599dec9ac1ee6b1415.png](https://i-blog.csdnimg.cn/blog_migrate/7a4ae5294e622fcfd923c87c69644900.jpeg)
更改后的信息
- 方法二:
将需要的数据插入到一个新的表,然后DELETE之前的Room表,之后将数据重新插入
SELECT A.[RoomID],A.[BedNum],A.[GuestNum],A.[Description],A.[RoomStateID],B.[RoomTypeID]
INTO Room_Replace
FROM Room AS A
LEFT JOIN [Room_NEW] AS B ON A.Description=B.Description
之后DELTETE Room
INSERT INTO Room
SElECT * FROM Room_Replace