Обновите несколько строк для 2 столбцов в MySQL - PullRequest
4 голосов
/ 19 февраля 2012

Follow to Обновление нескольких строк в 1 столбце в MySQL .

Какой самый эффективный запрос для обновления нескольких строк в 2 столбцах?

UPDATE example_table SET variable1 = 12 WHERE id=1;
UPDATE example_table SET variable2 = 'blue' WHERE id=1;

UPDATE example_table SET variable1 = 42 WHERE id=2;
UPDATE example_table SET variable2 = 'red' WHERE id=2;

UPDATE example_table SET variable1 = 32 WHERE id=3;
UPDATE example_table SET variable2 = 'yellow' WHERE id=3;

Использование case представляется наиболее эффективным, но как мне это сделать, если одновременно задано несколько значений?

Ответы [ 4 ]

11 голосов
/ 19 февраля 2012

Если у вас есть таблица с именем categories и два столбца с именем display_order и title Вот что вы будете делать:

UPDATE categories
SET display_order = CASE id
    WHEN 1 THEN 32
    WHEN 2 THEN 33
    WHEN 3 THEN 34
END,
title = CASE id
    WHEN 1 THEN 'New Title 1'
    WHEN 2 THEN 'New Title 2'
    WHEN 3 THEN 'New Title 3'
END
WHERE id IN (1,2,3)
2 голосов
/ 01 августа 2012

Некоторым не нужно ставить этот знак на id '', например: "id", вы можете оставить его пустым ... как

UPDATE example_table
SET variable1 = (CASE
    WHEN id = 1 THEN 12
2 голосов
/ 19 февраля 2012

Я снова думаю, что CASE - это решение.Идея состоит в том, чтобы использовать отдельные операторы CASE для каждой переменной.Что-то вроде:

UPDATE `example_table`
SET `variable1` = (CASE
    WHEN `id` = 1 THEN 12
    WHEN `id` = 2 THEN 42
    WHEN `id` = 3 THEN 32
    END),
`variable2` = (CASE
    WHEN `id` = 1 THEN 'blue'
    WHEN `id` = 2 THEN 'red'
    WHEN `id` = 3 THEN 'yellow'
    END);

Надеюсь, это поможет!

0 голосов
/ 19 февраля 2012

Что-то вроде этого может быть тем, что вы хотите сделать:

UPDATE example_table SET variable1 = 42,variable2 = 'red' WHERE id=2;
...