我生成了以下表格:
here | there | cost
-------+-------+--------------+
{1,1} | {1,2} | 0.0 |
{1,1} | {2,1} | 0.0 |
{1,2} | {1,3} | 1.0 |
{2,1} | {2,2} | 1.0 |
{2,1} | {3,1} | 1.0 |
{1,2} | {2,2} | 1.0 |
{1,3} | {1,4} | 2.0 |
{2,2} | {2,3} | 2.0 |
...
{1,2} | {1,3} | 3.0 |
正如您所看到的,我有两个不同的费用{1,2}, {1,3}
我怎样才能保持每对的最佳价值?
答案 0 :(得分:1)
此查询将以最低成本返回所有唯一对(此处,那里):
SELECT
here,
there,
MIN(cost)
FROM
table_name
GROUP BY
here,
there;
答案 1 :(得分:0)
如果您要保留整行(包含更多列),请使用DISTINCT ON
:
SELECT DISTINCT ON (here, there) *
FROM tbl
ORDER BY here, there, cost;
相关:
此外,由于您似乎在使用数组(表定义未公开),因此请注意'{1,2}'
和'{2,1}'
的不相等。如果您需要将其评估为相等,请将表定义和Postgres版本添加到问题中,然后我将添加解决方案。相关: