mysql - 弥补用原生nativeQuery和MAX(ID)获取2个对象

标签 mysql hibernate spring-data-jpa

我有一个名为 Story 的表:

sID |  sName  |  sView  
 1  |   s1    |    1  
 2  |   s2    |    11  
 3  |   s3    |    142 
 4  |   s4    |    152

表格章节:

 chID  |  sID  |  chName  |  chContent
   1   |   1   |    ch1   |    aaa  
   2   |   2   |    ch2   |    aaa  
   3   |   3   |    ch3   |    aaa  
   4   |   1   |    ch4   |    aaa  
   5   |   3   |    ch5   |    aaa  
   6   |   1   |    ch6   |    aaa  
   7   |   2   |    ch7   |    aaa  

Navite查询:

SELECT s.*, MAX(c.chID) as chapterID FROM Story s 
       LEFT JOIN Chapter c ON s.sID = c.sID
       GROUP BY s.sID

结果:

 sID |  sName  |  sView  |  chapterID  
  1  |   s1    |    1    |      6
  2  |   s2    |    11   |      7
  3  |   s3    |    142  |      5
  4  |   s4    |    152  |     null

但是你应该得到一个“SELECT”。 *, C。 * FROM ....',谁能帮我!!!

最佳答案

您可以用不同的方式编写它。例如,您可以使用它:

SELECT s.*, c.* FROM Story s 
       LEFT JOIN (SELECT * FROM Chapter c INNER JOIN (SELECT MAX(c.chID) as chapterID FROM Story s 
       LEFT JOIN Chapter c ON s.sID = c.sID
       GROUP BY s.sID) d ON c.chID = d.chapterID) c ON s.sID = c.sID 

关于mysql - 弥补用原生nativeQuery和MAX(ID)获取2个对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52306138/

相关文章:

mysql - 在 MySQL 中搜索整个数据库的字符串的方法

mysql - 连接具有不同行数的表

Hibernate/JPA 将列映射到 Map 类型

java - Query.list() 中的 Hibernate NullPointerException

java - 如何在 JUnit4 中使用 hibernate 测试 DAO

mysql - 这个查询的错误在哪里? (sql-ex.ru 练习 25)

mysql - 更改标识符 user_id 的名称

java - @NamedNativeQuery - 如何将它绑定(bind)到存储库方法?

java - 如何使用where子句更新Spring Data JPA中的表

java - 使用 jdbctemplate 将查询中的数据保存在模型中