Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Jak wybrać element, ten poniżej i ten powyżej w MYSQL

Oto inny sposób na zrobienie tego za pomocą UNION s. Myślę, że jest to trochę łatwiejsze do zrozumienia i bardziej elastyczne niż przyjęta odpowiedź. Zauważ, że przykład zakłada id pole jest unikalne, co wydaje się być w przypadku Twojego pytania.

Poniższe zapytanie SQL zakłada, że ​​Twoja tabela nazywa się demo i ma jeden unikalny id pole, a tabela została wypełniona wartościami wymienionymi w pytaniu.

( 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

Daje następujący wynik:b03, d01, d02 .

To rozwiązanie jest elastyczne, ponieważ możesz zmienić każdy z LIMIT 1 deklaracje do LIMIT N gdzie N to dowolna liczba. W ten sposób możesz na przykład uzyskać poprzednie 3 rzędy i kolejne 6 rzędów.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Instrukcja SQL, aby wybrać zduplikowane rekordy pojawiające się więcej niż 2 razy

  2. Nieprawidłowy format XML — jak tego uniknąć

  3. MySQL wyszukaj wartość json według klucza w tablicy

  4. AES_DECRYPT() i AES_ENCRYPT() w MySQL z polskimi znakami

  5. Niestandardowa nazwa identyfikatora SailsJS i mySQL nie działa z niebieskimi wydrukami