2010-11-28 10 views
4

У меня есть таблица, которая выглядит следующим образом:Обновление нескольких строк с MySql

property propertyid value 
active  1   1 
datastore 2   apc 

Как бы сформулировать SQL запрос, чтобы обновить несколько строк, не обновляя все из них. IE, если было 6 строк, обновить 2,3 и 4, но не 1,5 и 6?

Спасибо.

+0

Обновление "обоих" чего? В какой колонке 1-6? – 2010-11-28 18:08:00

+0

Уточнение: таблица имеет три столбца: свойство, propertyid и значение. Уточнены оба вопроса. – bear 2010-11-28 18:10:02

ответ

9

Если это тот же столбец (ы), который вы обновляете во всех строках с тем же значением, вы можете легко сделать это с помощью такого запроса.

UPDATE property SET value=5 where propertyid IN(2,3,4) 

Это установит значение 5 для всех строк, где свойство Ид либо 2,3 или 4.

Если вы хотите обновить различные строки с разными значениями, боюсь, вам придется писать отдельные инструкции SQL. Вы могли бы прийти с SQL-запросом, используя оператор CASE, но он был бы легко читаемым и поддерживаемым с помощью простого SQL-запроса.

Предполагая, что вы манипулируете базой данных из приложения, я уверен, что с любым языком программирования, который вы будете использовать, это будет просто, как запись 1 SQL-оператора и цикл, замена значений и выполнение запроса или добавление все операторы обновления SQL для строки (while looping) и передать ее в базу данных, чтобы выполнить все сразу. Мне жаль, что я не знаю, будет ли это иметь существенное влияние на производительность, но я считаю, что выполнение всех сразу принесет некоторую пользу в отношении производительности.

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