簡體   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