Mysql
 sql >> Database >  >> RDS >> Mysql

mysql seleziona da n ultime righe

A partire dalla risposta data da @chaos, ma con alcune modifiche:

  • Dovresti sempre usare ORDER BY se usi LIMIT . Non esiste un ordine implicito garantito per una tabella RDBMS. Puoi solitamente ottieni le righe nell'ordine della chiave primaria, ma non puoi fare affidamento su questo, né è portatile.

  • Se ordini in ordine decrescente, non è necessario conoscere in anticipo il numero di righe nella tabella.

  • Devi fornire un nome di correlazione (alias tabella) in una tabella derivata.

Ecco la mia versione della query:

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