内側副SELECTは、私がテーブルにmap_tags
呼ばれています:のPostgreSQL:挿入
map_id | map_license | map_desc
そして、その記録map_tags
のレコードを参照する外部キー(1〜1)が含まれ、別のテーブル(widgets
):
map_license
と
widget_name
を持っている場合は、その後、私は挿入を実行したいすべての
map_license
Sがユニークである制約を(ただし
map_tags
上のキーとして設定されていない)、与えられた
widget_id | map_id | 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でそれをやったことがないが、それはMAP_ID、 'NULLを選択するウィジェット。INSERT INTOのように見てはいけない12345''? – raina77ow
ありがとう@ raina77ow(+1) - それが必要なのかどうかはわかりません。 '(...)VALUES(...)'構文の代わりに 'SELECT'文が間違いなく私を捨ててしまいます。それがどう動くべきか私に説明してもらえますか?再度、感謝します! –
さて、私はMySQLの[this](http://dev.mysql.com/doc/refman/5.1/en/insert-select.html)のように使っています...理由は、あなたがVALUES((SELECT smth)、 'smth_else')はデータを挿入しないでください。 ) – raina77ow