我正在使用Oracle 11g数据库。 假设我有一个带有四列的SQL表“Comments”。当一些用户注释时,对于该注释的每一行,一行被插入表中。
let sortedComments = Post.comments.sort { $0.date > $1.date }
我想写SELECT查询来获取最后一个用户更新的所有最后一行。在上面的情况下,应该获取LineNo 6,7,8和9。更新日期相同。 我只具有对数据库的只读权限,并且无法向组更新添加任何新列。
有什么办法可以获取这些行吗?
答案 0 :(得分:0)
此查询将提供最后一位评论者所做的最后评论,在您的情况下为6/7/8/9
SELECT *
FROM "Comments"
WHERE "lineNo">
( SELECT max("line No")
FROM "Comments"
WHERE (UpdateBy,updatedDate)<>
( SELECT "UpdateBy","updatedDate"
FROM "Comments"
WHERE "lineNo"=
(SELECT max("lineNo")
FROM "Comments") ))
修改了查询,以便如果最后一位评论者在2天(或更多)天评论,则会考虑最后一个评论日。
这里的SqlFiddle:http://www.sqlfiddle.com/#!9/91176e/1(因为Oracle小提琴的Mysql兼容性暂时是错误的)
答案 1 :(得分:0)
我想这就是你想要的。
SELECT Comments.*
FROM (SELECT MAX(lineNo) AS maxLineNo, Comment FROM Comments GROUP BY Comment) as X
INNER JOIN Comments ON (Comments.lineNo = X.maxLineNo AND Comments.Comment = X.Comment)