我有这个:
$getWallCommentQuery2 = mysql_query("SELECT * FROM users_wallcomments WHERE wallID = '$displayWall[id]' ORDER BY date DESC LIMIT 2");
while($show = mysql_fetch_array($getWallCommentQuery2)){
echo $show["comment"] . " <br> ";
}
现在,我的数据库:
INSERT INTO `users_wallcomments` VALUES (1, 401, 1, 2, '1284056799', 'test kommentar blabla1');
INSERT INTO `users_wallcomments` VALUES (2, 401, 1, 1, '1284540210', 'test test comment2');
INSERT INTO `users_wallcomments` VALUES (3, 401, 1, 1, '1284540225', 'nr3 kommentar');
INSERT INTO `users_wallcomments` VALUES (4, 401, 1, 1, '1284540237', 'nr4 kommentar');
第五个字段..(其中数字以1284开头..)是日期的unix时间戳。现在我想通过顶部的查询对此进行排序,限制为2;
它限制为两个,但是当我按照日期DESC进行ORDER时它没有正确排序..
我收到第3个(id)作为最后一个和第4个(id)吗?我希望最后有第4个(因为它有最新的日期戳,你也可以看到,它有37个,第三个有25个),但它仍然排在第3位。
有什么问题?
答案 0 :(得分:4)
将DESC
更改为ASC
按降序排序的日期(DESC
)将始终首先生成最新日期,最后生成最早日期。
如果按升序(ASC
)对日期进行排序,您将首先获得id为3的条目,然后是id为4的条目。
<强>更新强> 如果你只想要在日期asc中排序的最后2行,那么试试这个:
SELECT * FROM
(SELECT * FROM users_wallcomments WHERE wallID = '$displayWall[id]' ORDER BY date DESC LIMIT 2) recentWallComments
ORDER BY date ASC
答案 1 :(得分:1)
SELECT * FROM (
SELECT * FROM users_wallcomments WHERE wallID = '$displayWall[id]' ORDER BY date DESC LIMIT 2
) t1
ORDER BY t1.date ASC
这应该可以解决问题。
答案 2 :(得分:0)
您可以执行以下操作:
SELECT *
FROM (
SELECT *
FROM users_wallcomments
WHERE wallID = '$displayWall[id]'
ORDER BY date DESC LIMIT 2
) AS foo
ORDER BY date ASC