Обновите несколько строк с MySQL - PullRequest
4 голосов
/ 28 ноября 2010

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

property   propertyid  value
 active     1           1
 datastore  2           apc

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

Спасибо.

1 Ответ

9 голосов
/ 28 ноября 2010

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

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

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

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...