2017-07-21 62 views
0
INSERT INTO TABLE WEEKS (ID, WK1) SELECT ID, WEEK1 FROM TBL1 WHERE ID = 100; 
INSERT INTO TABLE WEEKS (ID, WK2) SELECT ID, WEEK2 FROM TBL1 WHERE ID = 100; 
INSERT INTO TABLE WEEKS (ID, WK3) SELECT ID, WEEK3 FROM TBL1 WHERE ID = 100; 
INSERT INTO TABLE WEEKS (ID, WK4) SELECT ID, WEEK4 FROM TBL1 WHERE ID = 100; 

是否有將這些語句合併爲一個的方法?將多個INSERT語句組合成一個

+3

你應該真正改變你的表的設計。這是不正常的 –

+0

如果你將它們合併成一個,你會得到什麼?你應該做什麼@juergend寫道。如果你從一開始就做到了這一點,那麼你就不會在考慮如何將所有這一切融合爲一體。 – Mjh

+0

我upvoted抵消downvoter。糟糕的桌子設計並不意味着這是一個糟糕的問題。有時人們會繼承其他人的代碼,並且無法控制設計。他們仍然應該能夠提問。 – adam0101

回答

0

編輯瞭如何原來的問題已更新:

您可以結合使用工會作爲由@ adam0101說這些INSERT語句,但它會不會比使用4個INSERT語句快。

請注意,你真的應該重新設計你的數據庫爲normalized。這樣做會減少重複數據並提高數據庫的性能。

+0

這隻會插入一條記錄,而原來的查詢會插入4. – adam0101

+0

這是我的錯誤。這不是一個恆定的價值。 – ntdctt

1
INSERT INTO TABLE WEEKS (ID, WK1, WK2, WK3, WK4) 
     SELECT ID, WEEK1, NULL, NULL, NULL FROM TBL1 WHERE ID = 100; 
UNION SELECT ID, NULL, WEEK2, NULL, NULL FROM TBL1 WHERE ID = 100; 
UNION SELECT ID, NULL, NULL, WEEK3, NULL FROM TBL1 WHERE ID = 100; 
UNION SELECT ID, NULL, NULL, NULL, WEEK4 FROM TBL1 WHERE ID = 100; 

像別人說的,這看起來好像不是一個好的餐桌設計。如果可以的話,你應該考慮規範你的表結構。

+0

周(1-4)是TBL1的列。它們不是一個恆定的價值。 – ntdctt

+0

@ntdctt,在我看到您的修改後更新。 – adam0101

0

如果你只是想鞏固查詢,可以使用以下命令:

INSERT INTO TABLE WEEKS (ID, WK1,WK2,WK3,WK4) SELECT ID, 1,2,3,4 FROM TBL1 
WHERE ID = 100; 
+0

這隻會插入一條記錄,而原來的查詢會插入4 – adam0101

+0

很多是的,但我仍然不確定4行是他想要的 –

相關問題