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?
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.
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 !!!!
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
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.