MYSQL select last rows,order by ASC
我只想在帖子中选择最新的3条评论,并按ASC顺序排列。MYSQL select last rows,order by ASC
这将选择最后3行,但我需要他们以相反的顺序:
mysql_query("
SELECT * FROM comments WHERE postID='$id' AND state='0' ORDER BY id DESC LIMIT 3")
您可以在以后排序扭转它。
SELECT *
FROM (SELECT * FROM comments
WHERE postID='$id'
AND state='0'
ORDER BY id DESC
LIMIT 3) t
ORDER BY id ASC;
这也可以做到了在PHP中,无需修改SQL查询,只需在结果集向后迭代:
$res = mysql_query(...);
for($i=mysql_num_rows($res)-1; $i>=0; $i--) {
//do whatever
}
我承认我不知道的性能差异是什么(如果有的话),但这只是另一个可能适合你的选项。
我更喜欢这种方法,我认为它将选择三个最新的输出和输出最早的输出的想法分开(在我的脑海里至少:p) – 2012-01-17 07:43:15
那么它总是最好的尽可能在服务器上完成尽可能多的工作(在数据库中),并且不让用户端必须这样做(使用php),但我非常感谢您的答复。 – 2012-01-17 07:44:52
我认为这真的归结为一个偏好问题。我通常喜欢尽可能在SQL中做更多的事情,但有时它可能会混淆代码,而PHP更具可读性和可理解性,恕我直言,所以有时向后迭代只会使代码更加清晰。 – cegfault 2012-01-17 07:50:44
$result = mysqli_query($con,"SELECT * FROM (SELECT * FROM messeges WHERE username='{$_SESSION['username']}' ORDER BY id DESC LIMIT 3) t ORDER BY id ASC");
仅有代码的答案对教育SO读者没有太大帮助。请编辑您的答案以包含一些解释。您的答案位于审核队列中,因为它已被标记为低质量。 (...并请格式化您的代码) – mickmackusa 2017-04-19 12:35:46
非常感谢。 – 2012-01-17 07:35:27
不建议您使用*,提及所有项目的速度会更快 – Porizm 2013-05-28 16:46:57