postgresql 如何用可分页的Spring Data JPA选择不同的值?

jvlzgdj9  于 2023-05-12  发布在  PostgreSQL
关注(0)|答案(1)|浏览(118)

我想在我的表中使用分页进行一个独特的选择,但它声称有这个错误。有人知道怎么解决吗?

错误:

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);
7fyelxc5

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

相关问题