2013-08-05 2 views
0

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

INSERT into mytable (CodeId, ValueData, category) VALUES (3, 4, 'COMPUTERS'); 
INSERT into mytable (CodeId, ValueData, category) VALUES (3, 12, 'TABLES'); 

Как я могу генерировать обратно оператор вставки с отборным заявлением, так что я могу запустить запрос на выборке, как:

SELECT (super query) from mytable where CodeId = 3 

и иметь что-то вроде этого, как выхода:

INSERT into mytable (CodeId, ValueData, category) VALUES (3, 4, 'COMPUTERS'), (3, 12, 'TABLES') ; 

EDIT:


Сейчас я Тринг что-то вроде этого:

select concat('insert into mytable (CodeId, ValueData, category) 
VALUES (', select (CodeId, ValueData, category) as gstr from mytable, ')') 

Я думаю, что это должно быть что-то по этой линии ....

+1

Не могли бы вы объяснить ввод и вывод, который вы хотите? – Luv

+0

Думал, что я уже объяснил вывод с примером ожидаемого результата – rtuner

+0

Можете ли вы использовать 'mysqldump' или' phpMyAdmin'? –

ответ

2

Полностью тестировался, но должен получить Вас на правильном пути ...

SELECT Concat('INSERT INTO mytable (CodeId, ValueData, category) VALUES', Group_Concat(the_values)) As result 
FROM (
     SELECT Concat('(', CodeId, ', ', ValueData, ', ', category, ')') As the_values 
     FROM mytable 
     WHERE CodeId = 3 
     ) As x 
+0

Я только что изменил подход еще раз. Нажмите на «отредактированные N мин. Назад» на этом посту, чтобы увидеть прежние версии. – gvee

+0

Спасибо, но говорит: 'concat не является признанной встроенной функцией.' – rtuner

+0

Какие СУБД вы используете? Я мог бы поклясться, что он сказал MySQL где-то ... http://dev.mysql.com/doc/refman/5.5/en/string-functions.html#function_concat – gvee

1

Попробуйте это,

Select CodeId, ValueData, category 
into DESTTableName 
from mytable where CodeId=3; 
+0

Это будет работать только один раз, и если DESTTableName уже не существует. – bhs

+0

@ bhs- Да, вы правы. –

0

Правильный синтаксис для этого типа вставки будет:

INSERT INTO MyTable(CodeId, ValueData, category) 
SELECT CodeId, ValueData, category 
FROM MYTable 
WHERE CodeID=3 

Ваш пример имеет вы выбор и вставки данных в одну таблицу?

Пока выбранные столбцы соответствуют шаблону столбцов, которые вы хотите ввести, вы в порядке.

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

  • Нет связанных вопросов^_^