我有一個表叫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