0

对于我的数据库课程,我有一个表:lab4Central,其中列是:productid、description 和 plantid,植物 QRO 具有并且 id = 1000,例如:12799、'Product 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 并且我们将 20000 添加到 productid,对于 MTY 也是如此。

我对此进行了编码,这给了我正确的值:

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

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

希望您能够帮助我。

4

3 回答 3

1

你想要的实际上与你写的相反。取而代之的是Insert... Select...可能是您所追求的。

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

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

于 2018-10-08T15:20:50.780 回答
0

生成然后手动执行的 INSERT 语句很可能是一个技巧,可能以大约 100 行为一组。

否则会做一个INSERT ... SELECT声明。但这对于同一张表是不可能的,因此这个解决方案。

另请参阅 OUTPUT TO FILE 等(我目前不知道)。

于 2018-10-08T15:17:56.460 回答
0

假设您要在 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;
于 2018-10-08T15:28:14.613 回答