在我的图像表中,我需要从csv_images表中插入数据。
我必须插入图片中的链接。
在poi_image表中,我必须插入图像表的id(即d.id),但我还必须插入另一个表(poi id表)的id。
csv_images表包含一个字段(uri_id),该字段对应于poi表的uri_id字段。
因此,我必须在poi_images表中插入与poi对应的poi的id。 ur_id和csv_address . ur_id所以我使用With as,但我不能传输csv_address。将Uri_id删除到下一步,以便能够重用它:
WITH image_insert AS (
INSERT INTO image
(lien_image)
SELECT c.lien
FROM csv_images c
join poi p on p.uri_id = c.poi
group by lien
RETURNING *, p.uri_id
)
INSERT INTO poi_images (poi_id, image_id)
SELECT p.uri_id, d.id
FROM image_insert d;
谢谢
这很棘手,因为Postgres只允许您返回插入行的值。在您的示例中,lien_image
是唯一的(因为GROUP BY
),因此一种选择是使用JOIN
重建值:
WITH image_insert AS (
INSERT INTO image (lien_image)
SELECT c.lien
FROM csv_images c JOIN
poi p
ON p.uri_id = c.poi
GROUP BY c.lien
RETURNING *
)
INSERT INTO poi_images (poi_id, image_id)
SELECT c.poi, ii.id
FROM image_insert ii JOIN
csv_images c
ON c.lien = ii.lien_image ;