当更新日期相同时,SELECT查询以获取最后一个用户更新的所有最后一行

时间:2016-06-08 07:03:11

标签: sql select oracle11g

我正在使用Oracle 11g数据库。 假设我有一个带有四列的SQL表“Comments”。当一些用户注释时,对于该注释的每一行,一行被插入表中。

let sortedComments = Post.comments.sort { $0.date > $1.date }

我想写SELECT查询来获取最后一个用户更新的所有最后一行。在上面的情况下,应该获取LineNo 6,7,8和9。更新日期相同。 我只具有对数据库的只读权限,并且无法向组更新添加任何新列。

有什么办法可以获取这些行吗?

2 个答案:

答案 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)