2016-05-13 9 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

i didnt downvote, но, вероятно, из-за 'если какой-либо столбец значений существует с 'bye'' – 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', если это означает, что идентификатор не должен совпадать, вы можете удалить vt.value_id = vt2.value_id часть

Смежные вопросы