JPQL row_number()模拟

问题描述 投票:0回答:1

对不起,如果标题不清楚,我会尝试更详细地描述问题 - 有两个表,让它是studentsbooks,每个学生可以有很多书。我正在尝试编写JPQL查询,该查询将挑选所有学生,并且每个学生只有一本书(在两个查询之间结果一致之前无关紧要)。在Oracle中我会使用row_number() ...,然后只使用它所在的书籍.1。有没有办法在JPQL中做类似的事情? (或者可能更容易,因为我不确定我的sql方式是否最佳)。

java sql jpa jpql
1个回答
0
投票

您可以使用纯SQL,即HAVINGGROUP BYMAX

例:

CREATE TABLE books (book_id INT UNSIGNED, stud_id INT UNSIGNED);

INSERT INTO books VALUES
(1,1),
(2,2),
(3,3),
(4,4),
(5,5),
(6,6),
(7,7),
(8,8),
(9,1),
(10,2),
(11,1),
(12,2),
(13,3),
(14,4),
(15,5);

SELECT stud_id, max(book_id) FROM books GROUP BY stud_id HAVING max(book_id);

我把你的问题减少到了一张桌子。另外,我选择MAX只返回每个学生一个book_id - 最大 - 这两个查询之间是一致的。除非您向我们提供一些有意义的样本数据,否则您必须弄清楚如何将这些内容自行应用于您的问题。希望我能帮忙:)

© www.soinside.com 2019 - 2024. All rights reserved.