sql >> Database >  >> RDS >> Mysql

Een item selecteren, het onderstaande en het bovenstaande in MYSQL

Hier is een andere manier om het te doen met UNION s. Ik denk dat dit iets gemakkelijker te begrijpen en flexibeler is dan het geaccepteerde antwoord. Merk op dat in het voorbeeld wordt uitgegaan van de id veld is uniek, wat het geval lijkt te zijn op basis van uw vraag.

De onderstaande SQL-query gaat ervan uit dat uw tabel demo heet en heeft een enkele unieke id veld en de tabel is gevuld met de waarden die u in uw vraag hebt vermeld.

( SELECT id FROM demo WHERE STRCMP ( 'd01', id ) > 0 ORDER BY id DESC LIMIT 1 )
UNION ( SELECT id FROM demo WHERE id = 'd01' ORDER BY id ) UNION 
( SELECT id FROM demo WHERE STRCMP ( 'd01', id ) < 0 ORDER BY id ASC LIMIT 1 ) 
ORDER BY id

Het levert het volgende resultaat op:b03, d01, d02 .

Deze oplossing is flexibel omdat u elk van de LIMIT 1 . kunt wijzigen verklaringen tot LIMIT N waar N is een willekeurig nummer. Op die manier kunt u bijvoorbeeld de vorige 3 rijen en de volgende 6 rijen krijgen.



  1. Solr DataImportHandler-configuratie

  2. MySQL-probleem bij bijwerken van DATETIME-veld van ISO 8601-indeling

  3. MySQL-filter JSON_CONTAINS Elke waarde uit array

  4. PostgreSQL-planeet in Ansible Galaxy