Mysql
 sql >> Base de données >  >> RDS >> Mysql

mysql sélectionne parmi les n dernières lignes

À partir de la réponse donné par @chaos, mais avec quelques modifications :

  • Vous devez toujours utiliser ORDER BY si vous utilisez LIMIT . Il n'y a pas d'ordre implicite garanti pour une table RDBMS. Vous pouvez habituellement obtenir des lignes dans l'ordre de la clé primaire, mais vous ne pouvez pas vous y fier, et ce n'est pas non plus portable.

  • Si vous triez par dans l'ordre décroissant, vous n'avez pas besoin de connaître au préalable le nombre de lignes du tableau.

  • Vous devez donner un nom de corrélation (aka alias de table) à une table dérivée.

Voici ma version de la requête :

SELECT `id`
FROM (
    SELECT `id`, `val`
    FROM `big_table`
    ORDER BY `id` DESC
    LIMIT $n
) AS t
WHERE t.`val` = $certain_number;