qzs*_*ard 5 mysql sql spring-data spring-data-jpa
这是一个很常见的情况,但我不确定我做错了什么.
TABLE POSTS [ ID, USER_ID, TOPIC_ID, TIME ]
Run Code Online (Sandbox Code Playgroud)
我想在topic_id'1'上只获得每个用户的最后一篇文章
SELECT p.*
FROM
posts p,
(
SELECT user_id, max(time) mtime
FROM posts
WHERE topic_id = 1
GROUP BY user_id
) pm
WHERE
p.user_id = pm.user_id AND
p.time = pm.mtime
Run Code Online (Sandbox Code Playgroud)
它是否正确?没有子查询,有没有办法做到这一点?
是否有选项可以使用spring-data查询获取此数据,或者这只是JDBC /存储过程?
您可以通过使用 join 来获取每个用户的最新帖子,而无需使用子查询:
SELECT p.*
FROM posts p
LEFT OUTER JOIN posts t
ON(p.user_id = t.user_id and p.time < t.time and t.topic_id = 1)
WHERE p.topic_id = 1 and t.topic_id is null
Run Code Online (Sandbox Code Playgroud)