如何更新一系列“相同”SQL表中的同一列

时间:2017-07-20 16:00:55

标签: sql

第一篇帖子...如果答案在这里,我道歉 - 我找到了类似问题的答案,但不是这个问题。我对SQL的了解并不是那么好,虽然我通常可以实现我所需要的。

数据库具有相同的表,具有不同的名称,例如AHH_ACNT,AHL_ACNT等。我可以通过简单的更新语句实现我所需要的 -

BEGIN TRAN
GO
UPDATE AHH_ACNT
SET ALLOCN_IN_PROGRESS = 99
WHERE ALLOCN_IN_PROGRESS = 1
SELECT * FROM AHH_ACNT
WHERE ALLOCN_IN_PROGRESS =1
ROLLBACK
--COMMIT


BEGIN TRAN
GO
UPDATE AHL_ACNT
SET ALLOCN_IN_PROGRESS = 99
WHERE ALLOCN_IN_PROGRESS = 1
SELECT * FROM AHL_ACNT
WHERE ALLOCN_IN_PROGRESS = 1
ROLLBACK
--COMMIT 

但这样做涉及26个单独的陈述。理想情况下我会写 更新%_ACNT,但这不起作用! 有没有办法可以使用单个查询来执行此操作?然后,如果有一个新表,我将不必创建另一组行...

非常感谢提前!

1 个答案:

答案 0 :(得分:0)

请注意,您无法在单个更新语句中更新多个表。最好的办法之一是使用一个事务(如下所示)来确保处理两个UPDATE语句,使您不必担心部分完成操作。

BEGIN TRANSACTION

UPDATE AHH_ACNT
SET ALLOCN_IN_PROGRESS = 99
WHERE ALLOCN_IN_PROGRESS = 1

UPDATE AHL_ACNT
SET ALLOCN_IN_PROGRESS = 99
WHERE ALLOCN_IN_PROGRESS = 1

COMMIT