这是我的查询:
select locid,tlid,locdescription from (
select locid, tlid, locdescription
from
trip_log left join trip_log_det on tlid=tldtripid
left join locations on tldlocation=locid
where tlid=50 order by tldid
) as foo group by locid,tlid,locdescription
使用子查询的目的是让数据按照内部查询重新排序,因此按tldid
. 我不需要tldid
数据,因为它是一个串行列,它会使group by
语句无效。
有没有办法告诉子查询保持内部查询的顺序?
您根本不需要子查询。但是你必须决定你想要什么顺序。
之后
group by
就没有tldid
值了。并且每个组都将通过将许多行(具有不同的tldid
值)折叠成一行来组成。它们中的哪一个应该用于订购?是最大值,最小值还是其他?例如,您可以编写:
在 Postgres 中,您还可以使用非标准
DISTINCT ON
语法来获得相同的结果。这更灵活,因为您也可以tldid
在列表中包含 the 和其他(非分组)列select
: