web-dev-qa-db-fra.com

Sélectionne les N dernières lignes de MySQL

Je veux sélectionner les 50 dernières lignes de la base de données MySQL dans la colonne intitulée id qui est clé primaire. L’objectif est que les lignes soient triées par id dans ASC, c’est pourquoi cette requête ne fonctionne pas.

SELECT 
    *
FROM
    `table`
ORDER BY id DESC
LIMIT 50;

Il est également remarquable que des lignes puissent être manipulées (supprimées) et c’est pourquoi la requête suivante ne fonctionne pas non plus.

SELECT 
    *
FROM
    `table`
WHERE
    id > ((SELECT 
            MAX(id)
        FROM
            chat) - 50)
ORDER BY id ASC;

Question: Comment est-il possible de récupérer les N dernières lignes de la base de données MySQL pouvant être manipulées et placées dans l'ordre ASC?

106
tnanoba

Vous pouvez le faire avec une sous-requête:

SELECT * FROM (
    SELECT * FROM table ORDER BY id DESC LIMIT 50
) sub
ORDER BY id ASC

Ceci sélectionnera les dernières 50 lignes de table, puis les ordonnera par ordre croissant.

201
newfurniturey
SELECT * FROM table ORDER BY id DESC,datechat desc LIMIT 50

Si vous avez un champ de date qui stocke la date (et l’heure) à laquelle le chat a été envoyé ou tout champ rempli avec des données incrémentielles (ordre par DESC) ou désinscrémentielles (ordre par ASC) par ligne, placez-les dans la deuxième colonne dont les données doivent être en ordre.

C'est ce qui a fonctionné pour moi !!!! J'espère que ça va aider !!!!

9
aidonsnous
SELECT * FROM table ORDER BY id DESC LIMIT 50

économiser des ressources faire une requête, il n'est pas nécessaire de faire des requêtes imbriquées

2
Buzz
select * from Table ORDER BY id LIMIT 30

Notes: * id devrait être unique. * Vous pouvez contrôler le nombre de lignes renvoyées en remplaçant le 30 dans la requête.

0
Darshan