【发布时间】:2020-03-15 16:34:03
【问题描述】:
我需要根据多个条件更新一个表,并且更新需要在一个更新语句中完成。此外,限制是由于性能问题,我不能使用以下构造,因为我的更新中有大约 18 个 CASE 表达式:
UPDATE A
SET A.col1 = CASE WHEN B.col = someValue THEN B.Col2 END,
B.Col2 = CASE WHEN b.col = someOtherValue THEN B.Col2 END,
.
.
--18th CASE stmt
B.Col18 = CASE WHEN b.col = YetAnotherValue THEN B.Col2 END
FROM
tableA A
INNER JOIN
tableB B ON A.someColumn = B.someColumn
任何建议将不胜感激。
【问题讨论】:
-
更新语句有不同的辩证法,具体取决于 DBMS。因此,请同时标记您的 DBMS。
-
CASEexpressions (不是语句!)更新中的性能问题应该不大。你有tablea.somecolumn和tableb.somecolumn的索引吗? -
T-SQL (MSFT SQL Server)
-
为什么感觉会有性能问题,18个case表达式?。
-
@brand_new_developer 它是一个单一的更新声明,所以它应该无关紧要。如果你在一个循环中这样做,我会重新考虑写这个。尝试对性能进行基准测试,您打算使用此更新更新数百万或记录
标签: sql sql-server sql-update