如果标题不清楚,我很抱歉,我会尝试更详细地描述问题 - 有两个表格,分别是books
和row_number() ...
,每个学生都可以有很多书。我试图编写JPQL查询,这将挑选所有学生,每个学生只有一本书(在两个查询之间结果一致之前,哪一个并不重要)。在Oracle中,我使用java.sql.Date
,然后只使用它所在的书籍.1。有没有办法在JPQL中做类似的事情? (或者可能更容易,因为我不确定我的sql方式是否最佳)。
答案 0 :(得分:0)
您可以使用纯SQL,即HAVING
,GROUP BY
和MAX
。
示例:
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 - 最大 - 这两个查询之间是一致的。除非您向我们提供一些有意义的样本数据,否则您必须弄清楚如何将这些内容自行应用于您的问题。希望我能帮忙:)。