2016-11-23 84 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分钟内接受你的回答。 –