POŘADÍ SQL PODLE
SQL ORDER BY klauzule se používá k třídění dat uložených v tabulkách v databázi . Řazení lze provést vzestupně, sestupně nebo na základě více sloupců tabulky .
Obecně je výchozí pořadí řazení vzestupné.
SELECT expressions FROM tables WHERE conditions ORDER BY expression ASC | DESC;
Následuje syntaxe obecné klauzule ORDER BY:
Příklad:
Podívejme se na následující zákazníky tabulka.
ID | NAME | VĚK | ADRESA | PLAT |
1 | Himani gupta | 21 | Modinagar | 22 000 |
2 | Shiva tiwari | 22 | Bhópál | 21 000 |
3 | Ajeet bhargav | 45 | Meerut | 65 000 |
4 | Ritesh yadav | 36 | Azamgarh | 26 000 |
5 | Balwant singh | 45 | Váránasí | 36 000 |
6 | Mahesh sharma | 26 | Mathura | 22 000 |
SELECT * FROM Customers ORDER BY NAME, SALARY;
Výše uvedený dotaz seřadí všechny záznamy ve vzestupném pořadí na základě sloupců JMÉNO a PLAT.
Výstup:
ID | NAME | VĚK | ADRESA | PLAT |
3 | Ajeet bhargav | 45 | Meerut | 65 000 |
5 | Balwant singh | 45 | Váránasí | 36 000 |
1 | Himani gupta | 21 | Modinagar | 22 000 |
6 | Mahesh sharma | 26 | Mathura | 22 000 |
4 | Ritesh yadav | 36 | Azamgarh | 26 000 |
2 | Shiva tiwari | 22 | Bhópál | 21 000 |
SELECT * FROM CUSTOMERS ORDER BY NAME DESC;
Výše uvedený dotaz seřadí všechny záznamy v tabulce sestupně na základě sloupce NAME.
Výstup:
ID | NAME | VĚK | ADRESA | PLAT |
2 | Shiva tiwari | 22 | Bhópál | 21 000 |
4 | Ritesh yadav | 36 | Azamgarh | 26 000 |
6 | Mahesh sharma | 26 | Mathura | 22 000 |
1 | Himani gupta | 21 | Modinagar | 22 000 |
5 | Balwant singh | 45 | Váránasí | 36 000 |
3 | Ajeet bhargav | 45 | Meerut | 65 000 |
Klauzule SQL ORDER BY obsahuje různá témata. Jmenovitě jsou to:
- POŘADÍ SQL PODLE ASC – Seřadí data vzestupně
- SQL ORDER BY DESC – Seřadí data sestupně
- POŘADÍ SQL NÁHODNĚ – Třídí náhodná data
- POŘADÍ SQL PODLE LIMITU – Vybírá omezená data z databáze
- POŘADÍ SQL PODLE více sloupců – Seřadí data na základě více sloupců.
Pojďme si každou z nich podrobně probrat.
POŘADÍ SQL PODLE ASC
POŘADÍ SQL PODLE ASC klauzule seřadí data ve vzestupném pořadí na základě některých sloupců. Obecně platí, že výchozí pořadí řazení je vzestupné.
Příklad:
Podívejme se na následující zákazníky tabulka.
ID | NAME | VĚK | ADRESA | PLAT |
1 | Himani gupta | 21 | Modinagar | 22 000 |
2 | Shiva tiwari | 22 | Bhópál | 21 000 |
3 | Ajeet bhargav | 45 | Meerut | 65 000 |
4 | Ritesh yadav | 36 | Azamgarh | 26 000 |
5 | Balwant singh | 45 | Váránasí | 36 000 |
6 | Mahesh sharma | 26 | Mathura | 22 000 |
SELECT * FROM Customers ORDER BY NAME, SALARY;
Výše uvedený dotaz seřadí všechny záznamy ve vzestupném pořadí na základě sloupců JMÉNO a PLAT.
Výstup:
ID | NAME | VĚK | ADRESA | PLAT |
3 | Ajeet bhargav | 45 | Meerut | 65 000 |
5 | Balwant singh | 45 | Váránasí | 36 000 |
1 | Himani gupta | 21 | Modinagar | 22 000 |
6 | Mahesh sharma | 26 | Mathura | 22 000 |
4 | Ritesh yadav | 36 | Azamgarh | 26 000 |
2 | Shiva tiwari | 22 | Bhópál | 21 000 |
POŘADÍ SQL PODLE DESC
Klauzule SQL ORDER BY DESC třídí data v sestupném pořadí na základě některých sloupců.
Příklad:
Podívejme se na následující zákazníky tabulka.
ID | NAME | VĚK | ADRESA | PLAT |
1 | Himani gupta | 21 | Modinagar | 22 000 |
2 | Shiva tiwari | 22 | Bhópál | 21 000 |
3 | Ajeet bhargav | 45 | Meerut | 65 000 |
4 | Ritesh yadav | 36 | Azamgarh | 26 000 |
5 | Balwant singh | 45 | Váránasí | 36 000 |
6 | Mahesh sharma | 26 | Mathura | 22 000 |
SELECT * FROM CUSTOMERS ORDER BY NAME DESC;
Výše uvedený dotaz seřadí všechny záznamy v tabulce sestupně na základě sloupce NAME.
Výstup:
ID | NAME | VĚK | ADRESA | PLAT |
2 | Shiva tiwari | 22 | Bhópál | 21 000 |
4 | Ritesh yadav | 36 | Azamgarh | 26 000 |
6 | Mahesh sharma | 26 | Mathura | 22 000 |
1 | Himani gupta | 21 | Modinagar | 22 000 |
5 | Balwant singh | 45 | Váránasí | 36 000 |
3 | Ajeet bhargav | 45 | Meerut | 65 000 |
POŘADÍ SQL PODLE LIMITU
Klauzule SQL ORDER BY LIMIT pomáhá při získávání určitého počtu záznamů z databázové tabulky. Obecně se používá v situacích, kdy existuje velké množství n-tic, které splňují danou podmínku. Nastavuje horní limit počtu záznamů, které jsou načítány.
Chcete-li použít klauzuli LIMIT v SQL, musíte použít ROWNUM klauzule s tím.
Poznámka:Je třeba poznamenat, že klauzule LIMIT není podporována všemi verzemi SQL.
Tuto klauzuli lze zadat pomocí SQL 2008 OFFSET nebo FETCH FIRST klauzule .
Příklad:
Podívejme se na následujícího Studenta tabulka.
RollNo | Jméno | Známka |
12001 | Aditya | 9 |
12002 | Sahil | 6 |
12003 | Hema | 8 |
12004 | Robin | 9 |
12005 | Sita | 7 |
12006 | Anne | 10 |
12007 | Yusuf | 7 |
12008 | Alex | 5 |
SELECT * FROM Student LIMIT 5;
Výše uvedený dotaz vrátí pouze prvních 5 studentů z tabulky Student.
Výstup:
12001 | Aditya | 9 |
12002 | Sahil | 6 |
12003 | Hema | 8 |
12004 | Robin | 9 |
12005 | Sita | 7 |
Klauzuli LIMIT lze také použít s klauzulí ORDER BY.
SELECT * FROM Student ORDER BY Grade DESC LIMIT 3;
Výše uvedený dotaz vrátí 3 nejlepší studenty s nejvyššími známkami v sestupném pořadí.
Výstup:
12006 | Anne | 10 |
12001 | Aditya | 9 |
12004 | Robin | 9 |
Operátor LIMIT je užitečný zejména v situacích, kdy je třeba získat omezená data bez použití jakýchkoli podmíněných příkazů.
Operátor LIMIT lze také použít s operátorem OFFSET.
LIMIT s OFFSET
Je třeba poznamenat, že hodnota OFFSET by měla být větší než nula a nemůže být negativní. Pokud je zadána záporná hodnota, vrátí chybu.
Příklad:
Podívejme se na stejnou studentskou tabulku.
RollNo | Jméno | Známka |
12001 | Aditya | 9 |
12002 | Sahil | 6 |
12003 | Hema | 8 |
12004 | Robin | 9 |
12005 | Sita | 7 |
12006 | Anne | 10 |
12007 | Yusuf | 7 |
12008 | Alex | 5 |
SELECT * FROM Student LIMIT 5 OFFSET 2 ORDER BY RollNo;
Tento dotaz vrátí prvních 5 záznamů tabulky Student kromě 2 nejlepších záznamů.
Výstup:
RollNo | Jméno | Známka |
12003 | Hema | 8 |
12004 | Robin | 9 |
12005 | Sita | 7 |
12006 | Anne | 10 |
12007 | Yusuf | 7 |
OMEZIT VŠE
Existuje další klauzule podobná LIMIT známé jako LIMIT ALL . Klauzule LIMIT ALL nestanoví žádné omezení a vrátí všechny položky tabulky.
Příklad:
Podívejme se znovu na stejnou Studentskou tabulku.
RollNo | Jméno | Známka |
12001 | Aditya | 9 |
12002 | Sahil | 6 |
12003 | Hema | 8 |
12004 | Robin | 9 |
12005 | Sita | 7 |
12006 | Anne | 10 |
12007 | Yusuf | 7 |
12008 | Alex | 5 |
Dotaz:
SELECT * FROM Student LIMIT ALL;
RollNo | Jméno | Známka |
12001 | Aditya | 9 |
12002 | Sahil | 6 |
12003 | Hema | 8 |
12004 | Robin | 9 |
12005 | Sita | 7 |
12006 | Anne | 10 |
12007 | Yusuf | 7 |
12008 | Alex | 5 |
POŘADÍ SQL PODLE více sloupců
POŘADÍ SQL PODLE více sloupců vrátí položky dat ve sloupci tak, že je seřadí pomocí více sloupců, které byly uvedeny v dotazu.
Seřadí data na základě pořadí názvů sloupců, které byly dodány po klauzuli ORDER BY. Názvy sloupců by měly být přidány v odpovídajícím pořadí, v jakém uživatel požaduje řazení.
Názvy více sloupců lze přidat tak, že je oddělíte čárkou (,). K určení pořadí řazení lze také použít klíčová slova ASC nebo DESC.
Příklad:
Podívejme se na následujícího Zaměstnance tabulka se čtyřmi sloupci, jmenovitě id, first_name, last_name a plat.
id | first_name | last_name | plat |
1 | Lisa | Ulman | 3000 |
2 | Ada | Muller | 2400 |
3 | Thomas | Zelená | 2400 |
4 | Michael | Muller | 3000 |
5 | Marie | Zelená | 2400 |
Dotaz:
SELECT id, first_name, last_name, salary FROM employee ORDER BY salary DESC, last_name;
Výstup:
id | first_name | last_name | plat |
4 | Michael | M uller | 3000 |
1 | Lisa | U lman | 3000 |
3 | Thomas | G reen | 2400 |
5 | Marie | G reen | 2400 |
2 | Ada | M uller | 2400 |
Výstup byl tedy nejprve seřazen podle platu v sestupném pořadí a poté podle příjmení ve vzestupném pořadí. Je třeba poznamenat, že pokud není uvedeno ASC nebo DESC, ve výchozím nastavení seřadí oba sloupce vzestupně.
Závěr
Výše jsou tedy některé z nejdůležitějších a často používaných klauzulí ORDER BY, které vývojáři denně používají k provádění specifických operací s databází a získávání dat. Tyto klauzule mohou být použity jednotlivě nebo mohou být použity společně, kombinovaným způsobem, k provádění databázových operací.