我想在我的表中使用分页进行一个独特的选择,但它声称有这个错误。有人知道怎么解决吗?
错误:
org.postgresql.util.PSQLException: ERROR:
for SELECT DISTINCT, ORDER BY expressions must appear in select list
@Query(value = "SELECT DISTINCT budget.* FROM budget LEFT JOIN user_budget ON budget.id = user_budget.budget_id ORDER BY budget.created DESC, ?#{#pageable}",
countQuery = "SELECT DISTINCT count(*) FROM budget LEFT JOIN user_budget ON budget.id = user_budget.budget_id",
nativeQuery = true)
public Page<Budget> findAllByfilter(Pageable pageable);
1条答案
按热度按时间7fyelxc51#
我知道这是一个老问题,但我想对正确答案做一些解释。这个问题更集中在PostgreSQL
DISTINCT ON
子句上。就像文件上说的,
SELECT DISTINCT
子句从 the result(整个元组)中删除重复行。SELECT DISTINCT ON (your_column1, your_column2 ...)
删除匹配 * 所有指定表达式 * 的行(指定列对行进行排序,并从结果集中删除重复项)。为了使返回的结果集在顺序方面保持可预测性,最好使用
ORDER BY
子句。注意如果
DISTINCT ON
子句与ORDER BY
表达式一起使用,则最左边的ORDER BY
表达式需要匹配DISTINCT ON
表达式。更多细节请参见this answer。