Скажем, у меня есть выбор
SELECT DISTINCT id, customer_id, domain FROM config WHERE type = 'foo';
который возвращает несколько записей.
Как мне сделать вставку для строки охвата в наборе результатов, например
INSERT INTO config (id, customer_id, domain) VALUES (@id, @customer_id, 'www.example.com');
где @id
и @customer_id
находятся поля строки в наборе результатов?
edit: я не хотел просто дублировать его, а domain
вместо этого вставил новое значение в поле . Тем не менее, фейспалм-ситуация простая ;-) Спасибо!
Ответы:
Вот так просто:
INSERT INTO config (id, customer_id, domain) SELECT DISTINCT id, customer_id, domain FROM config;
Если вы хотите "
www.example.com
" в качестве домена, вы можете:INSERT INTO config (id, customer_id, domain) SELECT DISTINCT id, customer_id, 'www.example.com' FROM config;
источник
domain
значением «www.example.com», а просто дублируются все записи.INSERT INTO config (id, customer_id, domain) SELECT id, customer_id, 'www.example.com' FROM ( SELECT DISTINCT id, customer_id, domain FROM config WHERE type = 'foo' ) x;
источник
INSERT INTO Config (id, customer_id, domain) SELECT DISTINCT id, customer_id, 'www.example.com' FROM config
Документация MySQL для этого синтаксиса находится здесь:
http://dev.mysql.com/doc/refman/5.1/en/insert-select.html
источник
РЕДАКТИРОВАТЬ - После прочтения комментария к ответу @ Krtek.
Я предполагаю, что вы запрашиваете обновление вместо вставки -
update config set domain = 'www.example.com'
Это обновит все существующие записи в таблице конфигурации с доменом как «www.example.com» без создания каких-либо повторяющихся записей.
СТАРЫЙ ОТВЕТ -
вы можете использовать что-то вроде -
INSERT INTO config (id, customer_id, domain) select id, customer_id, domain FROM config
Примечание: - Это не сработает, если у вас есть идентификатор в качестве первичного ключа.
источник
Выполните этот оператор SQL:
-- Do nothing.
Вы хотите выбрать отдельные строки из «config» и вставить те же строки в одну таблицу. Они уже там. Нечего делать.
Если вы на самом деле не хотите просто обновить некоторые или все значения в столбце «домен». Для этого потребуется инструкция UPDATE, которая действительно что-то делает.
источник