【发布时间】:2021-05-20 07:44:52
【问题描述】:
我正在用这个 SQL 语句构建一个距离矩阵:
INSERT INTO tabel (start, end, agg_cost)
SELECT * FROM pgr_dijkstraCostMatrix(
'SELECT id, source, target, cost, reverse_cost FROM edges',
(SELECT array_agg(id) FROM vertices
WHERE (vertices.eout =1) OR (vertices.eout >15) )
);
效果很好。
当“开始”和“结束”的组合已存在于表中时,如何防止插入? 我正在寻找另一个 WHERE 子句,但找不到放在哪里。
【问题讨论】:
-
这是一个 UPSERT 场景。阅读此stackoverflow.com/questions/1109061/…
-
您可以在表上创建一个唯一索引以在插入冲突时结束、开始和使用 (postgresql.org/docs/13/sql-insert.html)
-
感谢您的意见。
标签: sql postgresql distance-matrix