如何执行 SELECT 语句中的 INSERT?
How to execute an INSERT that's in a SELECT statement?
对于我的数据库课程,我有一个 table: lab4Central,其中的列是:productid、description 和 plantid,
工厂 QRO 有 id = 1000,例如:12799,'Product 12799',1000。
植物 SLP 的 ID = 2000,例如:29665,'Product 29665',2000.
我必须为其他 2 个工厂添加新寄存器:GDA 和 MTY。
对于 GDA,寄存器与工厂 QRO 相同,但它调整了 productid + 20000,与 MTY 相同,但使用 SLP 的寄存器,所以最后看起来像:
Plant GDA: 329799, 'Product 32799', 3000.
plant MTY: 49665, 'Product 49665', 4000.
如您所见,对于 GDA,寄存器与 QRO 中的寄存器相同,但另一个 plantid,我们将 20000 添加到 productid,对于 MTY 也是如此。
我编写了这个给我正确值的代码:
SELECT 'INSERT INTO LAB4CENTRAL VALUES('||(PRODUCTID+20000) || ',' || DESCRIPTION || ','|| 3000 ||');' FROM LAB4CENTRAL WHERE PLANTID=1000;
但它只是一个 select 并且我不知道如何执行插入语句所以它将数据插入 table.
希望你能帮助我。
生成然后手动执行的 INSERT 语句很可能是一个技巧,可能以大约 100 行的批次执行。
否则会做一个INSERT ... SELECT
语句。但这对于 相同的 table 是不可能的,因此这个解决方案。
另请参阅输出到文件或类似内容(我现在不知道)。
你要的其实和你写的恰恰相反。相反,Insert... Select... 可能就是您所追求的。
INSERT INTO LAB4CENTRAL
SELECT ProductID + 20000, 'Product' || Productid + 20000, 3000
FROM LAB4CENTRAL
WHERE PlantID = 1000;
这可能需要调整以适合您的数据,但基本思想是编写一个 SELECT 语句,为您提供结果集,然后您希望将其插入到 table 中。
假设您要将 select 结果插入 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;
对于我的数据库课程,我有一个 table: lab4Central,其中的列是:productid、description 和 plantid, 工厂 QRO 有 id = 1000,例如:12799,'Product 12799',1000。 植物 SLP 的 ID = 2000,例如:29665,'Product 29665',2000.
我必须为其他 2 个工厂添加新寄存器:GDA 和 MTY。 对于 GDA,寄存器与工厂 QRO 相同,但它调整了 productid + 20000,与 MTY 相同,但使用 SLP 的寄存器,所以最后看起来像:
Plant GDA: 329799, 'Product 32799', 3000.
plant MTY: 49665, 'Product 49665', 4000.
如您所见,对于 GDA,寄存器与 QRO 中的寄存器相同,但另一个 plantid,我们将 20000 添加到 productid,对于 MTY 也是如此。
我编写了这个给我正确值的代码:
SELECT 'INSERT INTO LAB4CENTRAL VALUES('||(PRODUCTID+20000) || ',' || DESCRIPTION || ','|| 3000 ||');' FROM LAB4CENTRAL WHERE PLANTID=1000;
但它只是一个 select 并且我不知道如何执行插入语句所以它将数据插入 table.
希望你能帮助我。
生成然后手动执行的 INSERT 语句很可能是一个技巧,可能以大约 100 行的批次执行。
否则会做一个INSERT ... SELECT
语句。但这对于 相同的 table 是不可能的,因此这个解决方案。
另请参阅输出到文件或类似内容(我现在不知道)。
你要的其实和你写的恰恰相反。相反,Insert... Select... 可能就是您所追求的。
INSERT INTO LAB4CENTRAL
SELECT ProductID + 20000, 'Product' || Productid + 20000, 3000
FROM LAB4CENTRAL
WHERE PlantID = 1000;
这可能需要调整以适合您的数据,但基本思想是编写一个 SELECT 语句,为您提供结果集,然后您希望将其插入到 table 中。
假设您要将 select 结果插入 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;