繁体   English   中英

如何执行SELECT语句中的INSERT?

[英]How to execute an INSERT that's in a SELECT statement?

对于我的DB课程,我有一个表:lab4Central,其列为:productid,description和plantid,工厂QRO的ID为1000,例如:12799,“产品12799”,1000。工厂SLP的ID为2000。 ,例如:29665,“产品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相同,我们在productid中添加了20000,对于MTY也是如此。

我对此进行编码,以提供正确的值:

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

但这只是一个选择,我不知道如何执行insert语句,因此它将数据插入表中。

希望您能够帮助我。

您想要的实际上与您编写的相反。 相反, 插入...选择...可能就是您想要的。

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

可能需要进行调整以适合您的数据,但是基本思想是编写SELECT语句,该语句为您提供了要插入到表中的结果集。

生成INSERT语句,然后手动执行,可能是大约100行的批处理,这是一个很好的技巧。

否则,将执行INSERT ... 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;

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM