我只想在帖子中選擇最新的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")
我只想在帖子中選擇最新的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