2016-05-13 64 views
-2

我有表Value_table和列value 我需要更新value列「嗨」如果任何value柱「再見」存在 我寫查詢有效更新語句

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

它的工作原理fine.Now自我在子查詢中使用同一個表,我們可以通過其他方式使這個語句更高效。

+1

是value_id爲表的唯一關鍵?或者你能提供樣本數據嗎? –

+0

爲什麼在子查詢中使用同一個表有所作爲? –

+0

@domnic:你問了80多個問題,然後在你問一個問題後走開第二個問題。請留下來在問題的第一個最重要的分鐘內回答評論。 –

回答

2

如果value_id是獨一無二的,你可以做

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

爲什麼這會被投票.....? – zee

+1

我沒有downvote,但可能是因爲'如果任何值列存在與'再見' – JamieD77

+0

沒有這會產生不同的結果。 –

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部分