【问题标题】:JPQL row_number() analogJPQL row_number() 模拟
【发布时间】:2018-08-07 13:00:03
【问题描述】:

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

【问题讨论】:

    标签: java sql jpa jpql


    【解决方案1】:

    您可以使用纯 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 - 最大的 - 这在两个查询之间是一致的。除非您向我们提供一些有意义的样本数据,否则您必须自己弄清楚如何将这些东西应用于您的问题。希望我能帮上忙:)

    【讨论】:

      猜你喜欢
      • 2023-04-10
      • 1970-01-01
      • 2012-06-27
      • 2011-09-23
      • 1970-01-01
      • 1970-01-01
      • 2019-08-06
      • 1970-01-01
      • 2012-07-17
      相关资源
      最近更新 更多