2016-11-23 31 views
1

我有以下兩個表:UsersSettings
我想要做的是爲每個現有用戶的設置添加一行。所以在僞代碼中:插入多行硬編碼數據,並從多結果選擇一列

foreach(NUMBER user_id IN Users){ 
    INSERT INTO "Settings" SET ("name", "value", "type", type_id, overridable) 
         VALUES ('date_format', 'dd-MM-yyyy', 'USER', user_id, '1'); 
} 

如何在SQL中執行此操作?

Here at the Using INSERT with the VALUE Clause and a SELECT Subquery part我看到以下內容:

INSERT INTO MyTable (PriKey, Description) 
    SELECT ForeignKey, Description 
    FROM SomeView; 

這幾乎是我想要的東西來完成,但它得到的,而不是它的所有從其他表插入值,只有一個(user_id在我的情況)與其他人的硬編碼「。

編輯:我正在使用SQL與Oracle數據庫。

+0

選擇文字。 – jarlh

+0

@a_horse_with_no_name添加它:SQL與Oracle數據庫。 –

+1

不相關,但是:你應該真的避免那些可怕的帶引號的標識符。 –

回答

2

使用select .. insert,並在選擇列表中提供的常量:

INSERT INTO "Settings" ("name", "value", "type", type_id, overridable) 
select 'date_format', 'dd-MM-yyyy', 'USER', user_id, '1' 
from users; 
+0

謝謝!有效。比我想象的要容易得多。我會在10分鐘內接受你的回答。 –