SQL ORDER BY
SQL ORDER BY klauzula służy do sortowania danych przechowywanych w tabelach w bazie danych . Sortowanie może odbywać się w górę, w dół lub na podstawie wielu kolumn tabeli .
Ogólnie rzecz biorąc, domyślny porządek sortowania to porządek rosnący.
SELECT expressions FROM tables WHERE conditions ORDER BY expression ASC | DESC;
Poniżej znajduje się składnia ogólnej klauzuli ORDER BY:
Przykład:
Rozważmy następujących Klientów tabela.
ID | NAZWA | WIEK | ADRES | WYNAGRODZENIE |
1 | Himani gupta | 21 | Modinagar | 22000 |
2 | Shiva tiwari | 22 | Bhopal | 21000 |
3 | Ajeet Bhargav | 45 | Meerut | 65000 |
4 | Ritesh yadav | 36 | Azamgarh | 26000 |
5 | Niezłe śpiewanie | 45 | Waranasi | 36000 |
6 | Szarm Mahesha | 26 | Mathura | 22000 |
SELECT * FROM Customers ORDER BY NAME, SALARY;
Powyższe zapytanie posortuje wszystkie rekordy w kolejności rosnącej na podstawie kolumn NAZWA i WYNAGRODZENIE.
Wyjście:
ID | NAZWA | WIEK | ADRES | WYNAGRODZENIE |
3 | Ajeet Bhargav | 45 | Meerut | 65000 |
5 | Niezłe śpiewanie | 45 | Waranasi | 36000 |
1 | Himani gupta | 21 | Modinagar | 22000 |
6 | Szarm Mahesha | 26 | Mathura | 22000 |
4 | Ritesh yadav | 36 | Azamgarh | 26000 |
2 | Shiva tiwari | 22 | Bhopal | 21000 |
SELECT * FROM CUSTOMERS ORDER BY NAME DESC;
Powyższe zapytanie posortuje wszystkie rekordy w tabeli w kolejności malejącej na podstawie kolumny NAME.
Wyjście:
ID | NAZWA | WIEK | ADRES | WYNAGRODZENIE |
2 | Shiva tiwari | 22 | Bhopal | 21000 |
4 | Ritesh yadav | 36 | Azamgarh | 26000 |
6 | Szarm Mahesha | 26 | Mathura | 22000 |
1 | Himani gupta | 21 | Modinagar | 22000 |
5 | Niezłe śpiewanie | 45 | Waranasi | 36000 |
3 | Ajeet Bhargav | 45 | Meerut | 65000 |
W klauzuli SQL ORDER BY znajdują się różne tematy. Mianowicie są to:
- SQL ZAMÓWIENIE WG ASC – Sortuje dane w porządku rosnącym
- SQL ORDER WEDŁUG OPISU – Sortuje dane malejąco
- SQL ZAMÓWIENIE LOSOWE – Sortuje losowe dane
- SQL ORDER WEDŁUG LIMITU – Wybiera ograniczone dane z bazy danych
- SQL ORDER BY Wiele kolumn – Sortuje dane na podstawie wielu kolumn.
Omówmy szczegółowo każdy z nich.
SQL ZAMÓWIENIE WG ASC
SQL ORDER WEDŁUG ASC klauzula sortuje dane w porządku rosnącym na podstawie niektórych kolumn. Ogólnie rzecz biorąc, domyślna kolejność sortowania to rosnąco.
Przykład:
Rozważmy następujących Klientów tabela.
ID | NAZWA | WIEK | ADRES | WYNAGRODZENIE |
1 | Himani gupta | 21 | Modinagar | 22000 |
2 | Shiva tiwari | 22 | Bhopal | 21000 |
3 | Ajeet Bhargav | 45 | Meerut | 65000 |
4 | Ritesh yadav | 36 | Azamgarh | 26000 |
5 | Niezłe śpiewanie | 45 | Waranasi | 36000 |
6 | Szarm Mahesha | 26 | Mathura | 22000 |
SELECT * FROM Customers ORDER BY NAME, SALARY;
Powyższe zapytanie posortuje wszystkie rekordy w kolejności rosnącej na podstawie kolumn NAZWA i WYNAGRODZENIE.
Wyjście:
ID | NAZWA | WIEK | ADRES | WYNAGRODZENIE |
3 | Ajeet Bhargav | 45 | Meerut | 65000 |
5 | Niezłe śpiewanie | 45 | Waranasi | 36000 |
1 | Himani gupta | 21 | Modinagar | 22000 |
6 | Szarm Mahesha | 26 | Mathura | 22000 |
4 | Ritesh yadav | 36 | Azamgarh | 26000 |
2 | Shiva tiwari | 22 | Bhopal | 21000 |
SQL ORDER WEDŁUG DESC
Klauzula SQL ORDER BY DESC sortuje dane w kolejności malejącej na podstawie niektórych kolumn.
Przykład:
Rozważmy następujących Klientów tabela.
ID | NAZWA | WIEK | ADRES | WYNAGRODZENIE |
1 | Himani gupta | 21 | Modinagar | 22000 |
2 | Shiva tiwari | 22 | Bhopal | 21000 |
3 | Ajeet Bhargav | 45 | Meerut | 65000 |
4 | Ritesh yadav | 36 | Azamgarh | 26000 |
5 | Niezłe śpiewanie | 45 | Waranasi | 36000 |
6 | Szarm Mahesha | 26 | Mathura | 22000 |
SELECT * FROM CUSTOMERS ORDER BY NAME DESC;
Powyższe zapytanie posortuje wszystkie rekordy w tabeli w kolejności malejącej na podstawie kolumny NAME.
Wyjście:
ID | NAZWA | WIEK | ADRES | WYNAGRODZENIE |
2 | Shiva tiwari | 22 | Bhopal | 21000 |
4 | Ritesh yadav | 36 | Azamgarh | 26000 |
6 | Szarm Mahesha | 26 | Mathura | 22000 |
1 | Himani gupta | 21 | Modinagar | 22000 |
5 | Niezłe śpiewanie | 45 | Waranasi | 36000 |
3 | Ajeet Bhargav | 45 | Meerut | 65000 |
SQL ZAMÓW WEDŁUG LIMITU
Klauzula SQL ORDER BY LIMIT pomaga w pobraniu określonej liczby rekordów z tabeli bazy danych. Jest zwykle używany w sytuacjach, gdy istnieje duża liczba krotek spełniających dany warunek. Ustawia górny limit liczby pobieranych rekordów.
Aby użyć klauzuli LIMIT w SQL, należy użyć ROWNUM z nim klauzulę.
Uwaga:Należy zauważyć, że klauzula LIMIT nie jest obsługiwana przez wszystkie wersje SQL.
Klauzula ta może być określona za pomocą SQL 2008 OFFSET lub klauzule FETCH FIRST .
Przykład:
Rozważmy następującego Studenta tabela.
Rolka nr | Nazwa | Ocena |
12001 | Aditya | 9 |
12002 | Sahil | 6 |
12003 | Hema | 8 |
12004 | Robin | 9 |
12005 | Sita | 7 |
12006 | Anna | 10 |
12007 | Yusuf | 7 |
12008 | Alek | 5 |
SELECT * FROM Student LIMIT 5;
Powyższe zapytanie zwróci tylko 5 najlepszych uczniów z tabeli Uczniowie.
Wyjście:
12001 | Aditya | 9 |
12002 | Sahil | 6 |
12003 | Hema | 8 |
12004 | Robin | 9 |
12005 | Sita | 7 |
Klauzula LIMIT może być również używana z klauzulą ORDER BY.
SELECT * FROM Student ORDER BY Grade DESC LIMIT 3;
Powyższe zapytanie zwróci 3 najlepszych uczniów z najwyższymi ocenami w kolejności malejącej.
Wyjście:
12006 | Anna | 10 |
12001 | Aditya | 9 |
12004 | Robin | 9 |
Operator LIMIT jest szczególnie przydatny w sytuacjach, gdy konieczne jest pobranie ograniczonych danych bez użycia instrukcji warunkowych.
Operator LIMIT może być również używany z operatorem OFFSET.
LIMIT z PRZESUNIĘCIEM
Należy zauważyć, że wartość PRZESUNIĘCIE powinna być większa od zera i nie może być ujemna. Jeśli zostanie podana wartość ujemna, zwróci błąd.
Przykład:
Rozważmy tę samą tabelę Studentów.
Rolka nr | Nazwa | Ocena |
12001 | Aditya | 9 |
12002 | Sahil | 6 |
12003 | Hema | 8 |
12004 | Robin | 9 |
12005 | Sita | 7 |
12006 | Anna | 10 |
12007 | Yusuf | 7 |
12008 | Alek | 5 |
SELECT * FROM Student LIMIT 5 OFFSET 2 ORDER BY RollNo;
To zapytanie zwróci 5 pierwszych rekordów tabeli Uczniów z wyłączeniem 2 pierwszych wpisów.
Wyjście:
Rolka nr | Nazwa | Ocena |
12003 | Hema | 8 |
12004 | Robin | 9 |
12005 | Sita | 7 |
12006 | Anna | 10 |
12007 | Yusuf | 7 |
LIMIT WSZYSTKO
Istnieje jeszcze jedna klauzula podobna do LIMIT, znana jako LIMIT WSZYSTKO . Klauzula LIMIT ALL nie nałoży żadnych ograniczeń i zwróci wszystkie wpisy tabeli.
Przykład:
Rozważmy ponownie tę samą tabelę Studentów.
Rolka nr | Nazwa | Ocena |
12001 | Aditya | 9 |
12002 | Sahil | 6 |
12003 | Hema | 8 |
12004 | Robin | 9 |
12005 | Sita | 7 |
12006 | Anna | 10 |
12007 | Yusuf | 7 |
12008 | Alek | 5 |
Zapytanie:
SELECT * FROM Student LIMIT ALL;
Rolka nr | Nazwa | Ocena |
12001 | Aditya | 9 |
12002 | Sahil | 6 |
12003 | Hema | 8 |
12004 | Robin | 9 |
12005 | Sita | 7 |
12006 | Anna | 10 |
12007 | Yusuf | 7 |
12008 | Alek | 5 |
SQL ORDER BY Wiele kolumn
SQL ORDER BY Wiele kolumn zwróci wpisy danych w kolumnie, sortując je przy użyciu wielu kolumn podanych w zapytaniu.
Posortuje dane według kolejności nazw kolumn podanych po klauzuli ORDER BY. Nazwy kolumn należy dodać w odpowiedniej kolejności, w jakiej użytkownik chce, aby nastąpiło sortowanie.
Wiele nazw kolumn można dodać, oddzielając je przecinkiem (,). Do określenia kolejności sortowania można również użyć słów kluczowych ASC lub DESC.
Przykład:
Rozważmy następującego Pracownika tabela mająca cztery kolumny, a mianowicie id, imię, nazwisko i wynagrodzenie.
identyfikator | imię | nazwisko | wynagrodzenie |
1 | Lisa | Ułman | 3000 |
2 | Ada | Muller | 2400 |
3 | Thomas | Zielony | 2400 |
4 | Michael | Muller | 3000 |
5 | Maryi | Zielony | 2400 |
Zapytanie:
SELECT id, first_name, last_name, salary FROM employee ORDER BY salary DESC, last_name;
Wyjście:
identyfikator | imię | nazwisko | wynagrodzenie |
4 | Michael | M grubszy | 3000 |
1 | Lisa | U lman | 3000 |
3 | Thomas | G ponownie | 2400 |
5 | Maryi | G ponownie | 2400 |
2 | Ada | M grubszy | 2400 |
W związku z tym najpierw posortowano wyniki według wynagrodzenia w porządku malejącym, a następnie według nazwiska w porządku rosnącym. Należy zauważyć, że jeśli nie wymieniono ASC lub DESC, domyślnie posortuje obie kolumny w kolejności rosnącej.
Wniosek
Tak więc powyżej znajdują się niektóre z najważniejszych i najczęściej używanych klauzul ORDER BY, które są używane codziennie przez programistów w celu wykonywania określonych operacji na bazie danych i pobierania danych. Klauzule te mogą być używane pojedynczo lub mogą być również używane razem, w połączony sposób, do wykonywania operacji na bazie danych.