我正在使用SQL Server 2014,我有一个名为ReservationStay的表,有2列,即ResaID和TAProfileID。 ReservationStay表包含超过50,000条记录。我需要更改TAProfileID的一些值。我已经确定了需要更改TAProfileID的所有ResaID,并且我有大约4,000条记录需要更改。
我可以编写我的SQL查询,如下所示:
UPDATE ReservationStay
SET TAProfileID = CASE Resaid
WHEN 119 THEN 984
WHEN 155 THEN 984
WHEN 175 THEN 255
.................
ELSE TAProfileID
END
GO
等等。
但是我需要为4,000条记录创建查询!
另一方面,我也注意到只需更改22个TAProfileID!只是这22个TAProfileID都连接到4,000个Resaid。我不想基于Resaid更改TAProfileID,而是基于' OLD'而不是更正TAProfileID。 TAProfileID。这将更容易维护。
换句话说,我的SQL查询应该考虑这个逻辑:
如果TAProfileID = 564那么TAProfileId变为984
如果TAProfileID = 701那么TAProfileID变为255
如何编写查询来处理此问题?
答案 0 :(得分:2)
创建包含两列的临时表
CREATE TABLE temp
(
oldid int,
newid int
)
将您的逻辑插入此临时表。
INSERT INTO temp
VALUES (564, 984), (701, 255);
单一更新声明。
UPDATE O
SET O.TAProfileID = T.newid
FROM ReservationStay O
JOIN temp T ON O.TAProfileID = T.oldid