我有下表。
comment postid userid tempid
c1 199 100003052455644 89
c2 193 100003052455644 2
c4 199 100003052455644 82
c5 198 100003052455644 5
c6 199 1097517748 65
现在我想以这样的方式检索数据,即数据首先按照postid
列的降序排序,然后按照插入行的顺序排序。现在我检索其中的值postid按降序排序,它给我这样的结果。
comment postid userid tempid
c6 199 1097517748 65
c4 199 100003052455644 69
c1 199 100003052455644 82
c5 198 100003052455644 5
c2 193 100003052455644 2
正如您所看到的,评论最后一个的用户ID出现在第一个位置。在199
postid.I通过按降序排序tempid
列来解决此问题。但是有一种方法,我不使用tempid列,因为这个表将很快填充,自动增量列将很快填写,所以我将来删除这个tempid列。所以我认为这不是一个好主意像这样做有没有其他解决方案呢?
现在我正在使用以下查询,它给出了正确的结果。
SELECT comments.comment,comments.postid,user.name,comments.userid,comments.tempid
FROM
user
INNER JOIN comments ON user.userid=comments.userid
INNER JOIN posts ON posts.postID = comments.postid
WHERE
comments.postid <=
(SELECT MAX(postid) FROM
(
SELECT wall.postid FROM wall,posts WHERE
wall.postid = posts.postid AND posts.userid=?
ORDER BY wall.postid DESC LIMIT 10 OFFSET ?
)sq1
)
AND
comments.postid >=
(SELECT MIN(postid) FROM
(
SELECT wall.postid FROM wall,posts WHERE
wall.postid = posts.postid AND posts.userid=?
ORDER BY wall.postid DESC LIMIT 10 OFFSET ?
)sq2
)
AND
posts.userid = ?
ORDER BY comments.postid DESC,comments.tempid DESC;
我们只关注最后一行。我想在删除comments.tempid DESC
子句时获得相同的结果。可能吗?
答案 0 :(得分:0)
我想在删除comments.tempid DESC子句时获得相同的结果。有可能吗?
是。您可以使用时间戳而不是整数添加另一列。但是两行可能具有相同的时间戳,因此它不是一个完美的解决方案。
但有没有一种方法我不使用tempid列,因为这个表会很快填充,自动增量列会很快填充,所以我将来会删除这个tempid列。所以我认为它这样做是不是一个好主意,这有什么其他解决方案吗?
自动增量列可以是bigint
类型。这对你来说已经足够了。
相关强>