Как выполнить INSERT, который находится в инструкции SELECT? - PullRequest
0 голосов
/ 08 октября 2018

для моего курса БД у меня есть таблица: lab4Central, столбцы которой: productid, description и plantid, QRO завода имеет и id = 1000, пример: 12799, «Продукт 12799», 1000. и SLP завода имеетid = 2000, ex: 29665, 'Product 29665', 2000.

Я должен добавить новые регистры для двух других заводов: GDA и MTY.Для GDA регистры те же, что и для QRO завода, но для него нужно отрегулировать продукт + 20000, то же самое для MTY, но с регистрами SLP, поэтому в конце оно будет выглядеть так:

Plant GDA: 329799, 'Product 32799', 3000.
plant MTY: 49665, 'Product 49665', 4000.

ASВы можете видеть, что для GDA регистр такой же, как в QRO, но другой плантидой, и мы добавляем 20000 к продукту, то же самое для MTY.

Я кодирую это, что дает мне правильные значения:

SELECT  'INSERT INTO LAB4CENTRAL VALUES('||(PRODUCTID+20000) || ',' || DESCRIPTION || ','|| 3000 ||');' FROM LAB4CENTRAL WHERE PLANTID=1000;

Но это всего лишь выбор, и я не знаю, как выполнить оператор вставки, чтобы он вставил данные в таблицу.

надеюсь, вы мне поможете.

Ответы [ 3 ]

0 голосов
/ 08 октября 2018

То, что вы хотите, на самом деле противоположно тому, что вы написали.Вместо этого Вставить ... Выбрать ... , вероятно, то, что вы ищете.

INSERT INTO LAB4CENTRAL 
SELECT ProductID + 20000, 'Product' || Productid + 20000, 3000 
FROM LAB4CENTRAL 
WHERE PlantID = 1000;

Это, возможно, должно быть настроено, чтобы соответствовать вашим данным, но основная идея состоит в том, чтобы написатьоператор SELECT, который дает вам набор результатов, который вы затем хотите вставить в таблицу.

0 голосов
/ 08 октября 2018

при условии, что вы хотите вставить результат выбора в столбцы ProductId, Description и your_col_fro_3000. Вы можете использовать INSERT SELECT

    INSERT INTO LAB4CENTRAL(ProductID, Description, your_col_for_3000) 
    SELECT ProductID + 20000, 'Product' || (Productid + 20000), 3000 
    FROM LAB4CENTRAL 
    WHERE PlantID = 1000;
0 голосов
/ 08 октября 2018

Вполне может быть уловкой генерировать операторы INSERT, которые затем выполняются вручную, возможно, партиями по 100 строк.

В противном случае можно было бы сделать оператор INSERT ... SELECT.Но это невозможно для той же таблицы , следовательно, это решение.

См. Также ВЫХОД В ФАЙЛ или что-то подобное (в данный момент я не знаю).

...