我正在使用Grafana,我想从数据库中选择DISTINCT记录。我该怎么办?
查询为:
SELECT reference AS "Reference", reference_url AS "Reference URL" FROM daily_run_vehicle WHERE retries >= 5 GROUP BY reference, reference_url ORDER BY 1;
但是当我尝试:
SELECT DISTINCT (reference) AS "Reference", reference_url AS "References" FROM daily_run_vehicle WHERE retries >= 5 GROUP BY reference, reference_url ORDER BY 1;
我得到相同的结果。
我在Grafana中使用的data source
是Postgres
。
更新
我得到的结果如下:
您看到第三和第四条记录具有相同的第一列(引用)。我不想要,我只想显示一个。
因此应该是:
答案 0 :(得分:0)
您将获得4个结果,因为SELECT DISTINCT
返回的行在所有选定字段中的值均不同。因此,由于第3行和第4行中reference
和reference_url
的组合不同,因此它们仍然都在DISTINCT
中返回。
要仅对要返回的字段的子集执行DISTINCT
,请使用DISTINCT ON
告诉它哪些字段用于检查唯一性,然后返回要返回的字段列表:
SELECT DISTINCT ON (reference) reference, reference_url
FROM daily_run_vehicle
WHERE retries >= 5
ORDER BY reference
我已将GROUP BY
删除为DISTINCT ON
,其顺序与GROUP BY 1 ORDER BY 1
相同;但是,如果您确实要按两个字段分组,则需要一个DISTINCT ON (reference, reference_url)
,在这种情况下,您实际上要返回4条记录。