Tôi có một bảng gọi là map_tags
:PostgreSQL: Sub-chọn bên chèn
map_id | map_license | map_desc
Và bảng khác (widgets
) mà hồ sơ có chứa một tài liệu tham khảo chính nước ngoài (1-1) lên mức kỷ lục map_tags
:
widget_id | map_id | widget_name
Với ràng buộc rằng tất cả map_license
s là duy nhất (tuy nhiên không được thiết lập làm khóa trên map_tags
), thì nếu tôi có map_license
và widget_name
, tôi muốn thực hiện chèn trên widgets
tất cả các bên trong câu lệnh SQL giống nhau:
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'
)
tôi tin tôi đi đúng hướng nhưng biết ngay lập tức rằng đây là SQL sai cho Postgres. Có ai biết cách thích hợp để đạt được một truy vấn như vậy?
Chưa bao giờ thực hiện nó với PostgreSQL, nhưng không nên cho nó trông như 'INSERT INTO widget CHỌN NULL, map_id, 'Bupo' TỪ map_tags ĐÂU map_license = '12345''? – raina77ow
Cảm ơn @ raina77ow (+1) - Tôi không chắc đó có phải là điều bạn nên làm hay không. Câu lệnh 'SELECT' thay cho cú pháp' (...) VALUES (...) 'chắc chắn đã ném tôi đi. Bạn có thể giải thích cho tôi như thế nào nên làm việc? Cảm ơn một lần nữa! –
Vâng, tôi chỉ sử dụng nó như [this] (http://dev.mysql.com/doc/refman/5.1/en/insert-select.html) trong MySQL ... Lý do, tôi cho rằng, là bạn phải xây dựng toàn bộ tập hợp dữ liệu sẽ được chèn vào - và giá trị ((SELECT smth), 'smth_else') không thực hiện.) – raina77ow