对另一个SELECT中的每一行运行UPDATE查询

时间:2016-07-12 11:07:52

标签: sql sql-server tsql

我有一个可以从0返回的SQL查询,让我们说20个结果。例如:

SELECT value_id FROM table1 t1
INNER JOIN table2 t2 ON ....
INNER JOIN table3 t3 ON ....
WHERE ....

然后,我想为每个value_id UPDATE查询运行。让我们说:

UPDATE table4

SET new_value = 1

WHERE value_id IN (SELECT value_id FROM table1 t1
INNER JOIN table2 t2 ON ....
INNER JOIN table3 t3 ON ....
WHERE ....)

子查询可以解决这个问题吗?性能效率还是其他方式?

1 个答案:

答案 0 :(得分:1)

您的查询没问题。性能取决于数据库的结构。例如,如果SELECT运行得很快,那么UPDATE应该非常快(不是那么快:UPDATE会有更多的开销。)

因此,您的问题的答案是:是的,子查询可以像这样工作。测试SELECT版本(使用table4)以了解对效果的影响。