sql >> Databáze >  >> RDS >> Mysql

Jak vybrat položku, níže a výše v MYSQL

Zde je další způsob, jak to udělat pomocí UNION s. Myslím, že je to trochu srozumitelnější a flexibilnější než přijatá odpověď. Všimněte si, že příklad předpokládá id pole je jedinečné, což se na základě vaší otázky zdá být.

Dotaz SQL níže předpokládá, že se vaše tabulka nazývá demo a má jediné jedinečné id pole a tabulka byla naplněna hodnotami, které jste uvedli ve své otázce.

( 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

Výsledkem je následující:b03, d01, d02 .

Toto řešení je flexibilní, protože můžete změnit každý z LIMIT 1 příkazy na LIMIT N kde N je libovolné číslo. Tímto způsobem můžete získat například předchozí 3 řádky a následujících 6 řádků.



  1. Konvence pojmenovávání databází od společnosti Microsoft?

  2. Znovu přidělte oprávnění k přístupu k hostiteli uživateli MySQL

  3. Která metoda je lepší pro ověření přihlašovacích údajů uživatele?

  4. Jak získám náhodnou výchozí hodnotu pro sloupec v MySQL/Rails