有下表示例:
JOBS
jobid
jobname
COMMENTS
jobid
userid
comment
date
USERS
userid
name
我需要从每个jobid中检索最后一条评论 到目前为止,我一直在尝试区别但是没有运气。 jobid可以在评论表中多次(多个评论等)
答案 0 :(得分:0)
只要评论和jobID的日期是唯一的,这就可以了。如果没有,那么这个答案将为您提供最新评论,包括关系。
select comment, jobid
from (select max(date) as MaxDate, jobid from comments group by jobid) x
inner join comments c
on c.jobid = x.jobid
and c.date = x.MaxDate
答案 1 :(得分:0)
您可以使用ROW_NUMBER()选择每个jobid的最后一条评论:
SELECT jobid, userid, comment, date
FROM (SELECT *, ROW_NUMBER() OVER (PARTITION BY jobid ORDER BY date DESC)'RowRank'
FROM COMMENTS
)sub
WHERE RowRank = 1
ROW_NUMBER()函数根据某些条件为每一行分配一个数字,PARTITION BY
部分中每个项目的编号从1开始,当然ORDER BY
确定顺序。使用ROW_NUMBER()
的好处是,您不需要像使用MAX()
一样进行自我加入。
如果您想加入其他表格以获取所有信息:
SELECT c.jobid, j.jobname, c.userid, u.username, c.comment, c.date
FROM (SELECT *, ROW_NUMBER() OVER (PARTITION BY jobid ORDER BY date DESC)'RowRank'
FROM COMMENTS
) c
JOIN jobs j
ON c.jobid = j.jobid
JOIN users u
ON c.userid = u.userid
WHERE c.RowRank = 1
答案 2 :(得分:0)
我建议添加一个COMMENTS.ID。
然后查看COMMENTS.ID的最大值。
另外你可以
SELECT JOBID, MAX(DATE) FROM COMMENTS GROUP BY JOBID
然后您可以将上述视图加入到您的COMMENTS表中以查找最大日期。您需要在COMMENTS.DATE上添加时间戳。
Ť