我有一个表叫map_tags
:PostgreSQL的:子选择内插
map_id | map_license | map_desc
而另一个表(widgets
),其记录包含外键引用(1:1)到map_tags
记录:
widget_id | map_id | widget_name
鉴于约束所有map_license
s为唯一的(但不设置为上map_tags
键),然后如果我有一个map_license
和widget_name
,我想执行插入在widgets
里面的所有相同的SQL语句:
INSERT INTO
widgets w
(
map_id,
widget_name
)
VALUES (
(
SELECT
mt.map_id
FROM
map_tags mt
WHERE
// This should work and return a single record because map_license is unique
mt.map_license = '12345'
),
'Bupo'
)
我相信我是在正确的轨道上,但知道了蝙蝠的权利,这是不正确的Postgres SQL。有没有人知道实现这种单一查询的正确方法?
从来没有与PostgreSQL的完成它,但它不应该像'INSERT INTO部件选择NULL,MAP_ID, 'Bupo' FROM map_tags WHERE map_license =“12345''? – raina77ow
Thanks @ raina77ow(+1) - 我不确定是否应该如此。代替'(...)VALUES(...)'语法的SELECT语句肯定会让我失望。你介意给我解释一下应该如何工作?再次感谢! –
嗯,我只是在MySQL中使用它[this](http://dev.mysql.com/doc/refman/5.1/en/insert-select.html)...我想,原因是你必须构建将要插入的整个数据集 - 而VALUES((SELECT smth),'smth_else')就不会这样做。 ) – raina77ow