MYSQL выбрать последние 3 строки, упорядочить по ASC - PullRequest
6 голосов
/ 17 января 2012

Я просто хочу выбрать 3 последних комментария к сообщению, и они должны быть упорядочены в порядке ASC.

Это выбирает последние 3 строки, однако они нужны мне в обратном порядке:

mysql_query("
SELECT * FROM comments WHERE postID='$id' AND state='0' ORDER BY id DESC LIMIT 3")

Ответы [ 3 ]

16 голосов
/ 17 января 2012

Вы можете выполнить обратную сортировку позже.

SELECT * 
FROM (SELECT * FROM comments
      WHERE postID='$id' 
        AND state='0' 
      ORDER BY id DESC 
      LIMIT 3) t
ORDER BY id ASC;
2 голосов
/ 17 января 2012

Это также может быть сделано только в PHP, без изменения SQL-запроса, просто итерацией в обратном порядке по набору результатов:

$res = mysql_query(...);
for($i=mysql_num_rows($res)-1; $i>=0; $i--) {
    //do whatever
}

Признаюсь, я не знаю, в чем разница в производительности (еслилюбой), но это просто еще один вариант, который может вам подойти.

0 голосов
/ 19 апреля 2017
$result = mysqli_query($con,"SELECT * FROM (SELECT * FROM messeges WHERE username='{$_SESSION['username']}' ORDER BY id DESC LIMIT 3) t ORDER BY id ASC");
...