Как бы мне выбрать и отобразить самые последние добавленные строки из таблицы SQL?

#php #sql

#php #sql

Вопрос:

Я создаю чрезвычайно простую систему публикации, и, похоже, я не могу понять, как получить самые последние строки из определенной таблицы. Я пробовал другие решения, предлагаемые здесь, но мои сообщения были размещены случайным образом. Как бы мне этого добиться? Мой код приведен ниже.

 function load_posts(){
$posts_sql = "SELECT * FROM posts";
    $posts_result = PhoenixDatabaseDatabase::$database->query($posts_sql);
    while($row = $posts_result->fetch_assoc()){
        $posts_display = '

        <div class = "card" style = "width:500px">
            <div class = "card-body">
            <div class = "card-title">'. $row['username'] .'</div>
            <p>'. $row['content'] .'</p>
            </div>
        </div>
            
        ';

        echo $posts_display;
        }
}
  

Опять же, я хочу, чтобы сообщения отображались от самых последних до старых.

Комментарии:

1. Пожалуйста, предоставьте примерные данные.

2. Почему бы просто не использовать ORDER BY ?

3. Какую конкретную реляционную базу данных вы используете? Пометьте свой вопрос конкретной СУБД.

Ответ №1:

В каждой строке должна быть информация, которая фиксирует эту информацию. Наиболее распространенными подозреваемыми являются:

  • автоматически увеличивающийся идентификатор
  • дата создания

Затем вы просто просите базу данных отсортировать результаты. Например, если post_id является автоматически увеличиваемым идентификатором:

 select p.*
from posts p
order by p.post_id;
  

Комментарии:

1. Мои post_id основаны на user_id, поэтому, если я добавлю автоматическое увеличение к post_id, я не получу никаких ошибок, если в столбце post_id есть два одинаковых значения?

2. @Neutron . . . Я просто не понимаю вопроса в комментарии. user_id они не имеют никакого отношения к вашему вопросу или этому ответу. Приведет ли то, что вы говорите, к ошибке, зависит от многих факторов, таких как ваша модель данных и запрос, на который вы ссылаетесь.

Ответ №2:

ВЫБЕРИТЕ * ИЗ ПОРЯДКА ИМЕН таблиц ПО идентификатору DESC

// порядок по должен быть с первичным ключом