Foreach id在一个表中,在另一个表中插入行

时间:2014-11-27 15:19:06

标签: sql

我有两张桌子。表'位置'是一对多/一个与表'资源'使用外键location_id。像这样的东西

locations -> id | location
resources -> id | location_id | name | value

我在'地点'中有很多记录。现在我想为每个现有的location.id'添加。在'位置',记录资源'使用名称和值的默认值以及当然的location_id。

我尝试了下面的查询,它会部分地生成所需的结果,因为这个sql查询剂量设置了' resoruces.name'和' resources.value'。他们应该分别是"标准"和" 1"。

INSERT INTO service_categories(location_id) SELECT id FROM locations;

我不能通过添加此字段的值来构造查询。这该怎么做? 我想要的结果是这样的:

    id | location_id | name     | value
-------------------------------------
    1  | 1           | Standard | 1
    2  | 2           | Standard | 1
    3  | 3           | Standard | 1
    4  | 4           | Standard | 1
    5  | 5           | Standard | 1
    6  | 6           | Standard | 1
    7  | 7           | Standard | 1
    8  | 8           | Standard | 1
....

1 个答案:

答案 0 :(得分:6)

如果表resources尚不存在,这应该有效:

SELECT
    location_id as id,
    location_id,
    'Standard' as name,
    1 as value
INTO resources
FROM locations

如果表格已经存在,那么你可以改为编写:

INSERT INTO resources (id, location_id, name, value)
SELECT
    location_id as id,
    location_id,
    'Standard' as name,
    1 as value
FROM locations

字符串文字将根据您使用的RDBMS而有所不同。例如,我相信MySQL使用反引号而不是单引号。