Ответ 1
Использование:
INSERT INTO table
(name, col1, col2)
SELECT t.name, t.col1, 'a'
FROM TABLE t
WHERE t.col2 IS NULL
Предположим, что ни столбцы name
, ни col1
не являются первичным ключом, либо имеют уникальное ограничение.
Обратите внимание: я задаю вопрос, на который я хочу ответить. Я знаю, что этот вопрос означает, что база данных настроена плохо. Поэтому я проголосую за любые ответы, предлагающие изменить способ настройки таблицы.
Мне нужно дублировать кучу строк при изменении одного значения.
name col1 col2
dave a nil
sue b nil
sam c 5
должно стать:
name col1 col2
dave a nil
dave a a
sue b nil
sue b a
same c 5
IE для всех записей в этой таблице, где col2 is null
, создайте новую запись в таблице, где скопированы name
и col1
, а col2
- a
.
Использование:
INSERT INTO table
(name, col1, col2)
SELECT t.name, t.col1, 'a'
FROM TABLE t
WHERE t.col2 IS NULL
Предположим, что ни столбцы name
, ни col1
не являются первичным ключом, либо имеют уникальное ограничение.
Будет ли это делать?
INSERT INTO yourtable
(SELECT name, col1, 'a'
FROM yourtable
WHERE col2 is NULL);
Если количество столбцов велико, вы можете скопировать нужные данные во временную таблицу, изменить данные во временной таблице так, как вы хотели, а затем скопировать содержимое временной таблицы обратно в исходное и удалить временная таблица.