有效的更新声明

时间:2016-05-13 18:08:47

标签: sql sql-server sql-server-2008

我有表Value_table和列value 我需要将value列更新为'嗨'如果任何value列存在' bye' 我写了查询

UPDATE Value_table
SET value = 'Hi'
WHERE value_id
IN
(
    SELECT
        value_id
    FROM 
        Value_table 
    WHERE 
        value = 'bye'
)

它运行正常。现在,因为我在子查询中使用相同的表,我们可以采用任何其他方式使这个语句更有效。?

2 个答案:

答案 0 :(得分:2)

如果value_id是唯一的,您可以

UPDATE Value_table
SET value = 'Hi'
WHERE value = 'bye'

答案 1 :(得分:1)

我猜如果表格非常大,EXISTS可能表现更好。

UPDATE  vt
SET     vt.value = 'Hi'
FROM    Value_table vt
WHERE EXISTS (  SELECT  1 
                FROM    Value_table vt2 
                WHERE   vt.value_id = vt2.value_id AND vt2.value = 'bye')

if any value column exists with 'bye'如果这意味着ID不必匹配,则可以删除vt.value_id = vt2.value_id部分