- Kai norime rūšiuoti įrašus pagal stulpelius, saugomus SQL duomenų bazės lentelėse, svarstome galimybę SQL naudoti sąlygą ORDER BY.
- SQL sąlyga ORDER BY padeda rūšiuoti įrašus pagal konkretų lentelės stulpelį. Tai reiškia, kad iš pradžių visos reikšmės, saugomos stulpelyje, kuriam taikome sąlygą ORDER BY, bus surūšiuotos. Tada atitinkamos stulpelių reikšmės bus rodomos ta pačia seka, kaip ir vertės, kurias gavome ankstesniame žingsnyje.
- Naudodami sąlygą ORDER BY, mes galime rūšiuoti įrašus didėjančia arba mažėjančia tvarka pagal mūsų reikalavimus. Įrašai bus rūšiuojami didėjančia tvarka, kai ASC raktinis žodis bus naudojamas su sąlyga ORDER. DESC raktinis žodis surūšiuos įrašus mažėjimo tvarka . Jei po stulpelio, pagal kurį turime rūšiuoti įrašus, nenurodytas joks raktinis žodis, tokiu atveju rūšiavimas pagal nutylėjimą bus atliekamas didėjančia tvarka.
Prieš rašydami įrašų rūšiavimo užklausas, supraskime sintaksę.
Sintaksė įrašams rūšiuoti mažėjančia tvarka:
SELECT ColumnName1,…,ColumnNameN FROM TableName ORDER BY ColumnNameDESC;
Panagrinėkime šią temą plačiau remdamiesi pavyzdžiais. Užklausoms rašyti pavyzdžiuose naudosime MySQL duomenų bazę.
Apsvarstykite, kad turime klientų lentelę su šiais įrašais:
ID | VARDAS | AMŽIAUS | ADRESAS | ATLYGINIMAS |
---|---|---|---|---|
1 | Himani Gupta | dvidešimt vienas | Modi Nagar | 22000 |
2 | Šiva Tiwari | 22 | Bhopalas | 21 000 |
3 | Ajeetas Bhargavas | Keturi | Meerut | 65 000 |
4 | Ritešas Jadavas | 36 | Azamgarh | 26 000 |
5 | Balwantas Singhas | Keturi | Varanasis | 36 000 |
6 | Mahešas Šarmas | 26 | Mathura | 22000 |
7 | Rohitas Srivastava | 19 | Ahmadabadas | 38 000 |
8 | Neeru Sharma | 29 | Pune | 40 000 |
9 | Akašas Jadavas | 32 | Mumbajus | 43500 |
10 | Sahilas Šeichas | 35 | Aurangabadas | 68800 |
1 pavyzdys:
Parašykite užklausą, kad surūšiuotumėte įrašus mažėjančia klientų vardų, saugomų klientų lentelėje, tvarka.
Užklausa:
mysql> SELECT *FROM customers ORDER BY Name DESC;
Čia SELECT užklausoje stulpelyje „Pavadinimas“ taikoma sąlyga ORDER BY, kad būtų rūšiuojami įrašai. DESC raktinis žodis surūšiuos įrašus mažėjimo tvarka.
Gausite tokią išvestį:
ID | VARDAS | AMŽIAUS | ADRESAS | ATLYGINIMAS |
---|---|---|---|---|
2 | Šiva Tiwari | 22 | Bhopalas | 21 000 |
10 | Sahilas Šeichas | 35 | Aurangabadas | 68800 |
7 | Rohitas Srivastava | 19 | Ahmadabadas | 38 000 |
4 | Ritešas Jadavas | 36 | Azamgarh | 26 000 |
8 | Neeru Sharma | 29 | Pune | 40 000 |
6 | Mahešas Šarmas | 26 | Mathura | 22000 |
1 | Himani Gupta | dvidešimt vienas | Modi Nagar | 22000 |
5 | Balwantas Singhas | Keturi | Varanasis | 36 000 |
3 | Ajeetas Bhargavas | Keturi | Meerut | 65 000 |
9 | Akašas Jadavas | 32 | Mumbajus | 43500 |
Visi klientų lentelėje esantys įrašai rodomi mažėjančia kliento vardo tvarka.
2 pavyzdys:
Parašykite užklausą, kad surūšiuotumėte įrašus mažėjančia klientų lentelėje saugomų adresų tvarka.
Užklausa:
mysql> SELECT *FROM customers ORDER BY Address DESC;
Užklausoje SELECT stulpeliui „Adresas“ taikoma sąlyga ORDER BY, kad būtų rūšiuojami įrašai. DESC raktinis žodis surūšiuos įrašus mažėjimo tvarka.
Gausite tokią išvestį:
pirminio rakto sudėtinis raktas
ID | VARDAS | AMŽIAUS | ADRESAS | ATLYGINIMAS |
---|---|---|---|---|
5 | Balwantas Singhas | Keturi | Varanasis | 36 000 |
8 | Neeru Sharma | 29 | Pune | 40 000 |
9 | Akašas Jadavas | 32 | Mumbajus | 43500 |
1 | Himani Gupta | dvidešimt vienas | Modi Nagar | 22000 |
3 | Ajeetas Bhargavas | Keturi | Meerut | 65 000 |
6 | Mahešas Šarmas | 26 | Mathura | 22000 |
2 | Šiva Tiwari | 22 | Bhopalas | 21 000 |
4 | Ritešas Jadavas | 36 | Azamgarh | 26 000 |
10 | Sahilas Šeichas | 35 | Aurangabadas | 68800 |
7 | Rohitas Srivastava | 19 | Ahmadabadas | 38 000 |
Visi klientų lentelėje esantys įrašai rodomi mažėjančia kliento adreso tvarka.
3 pavyzdys:
Parašykite užklausą, kad surūšiuotumėte įrašus klientų lentelėje saugomo klientų atlyginimo mažėjimo tvarka.
pėdos prieš pėdą
Užklausa:
mysql> SELECT *FROM customers ORDER BY Salary DESC;
Čia SELECT užklausoje stulpelyje „Atlyginimas“ taikoma sąlyga ORDER BY, kad būtų rūšiuojami įrašai. DESC raktinis žodis surūšiuos įrašus mažėjimo tvarka.
Gausite tokią išvestį:
ID | vardas | Amžius | Adresas | Atlyginimas |
---|---|---|---|---|
10 | Sahilas Šeichas | 35 | Aurangabadas | 68800 |
3 | Ajeetas Bhargavas | Keturi | Meerut | 65 000 |
9 | Akašas Jadavas | 32 | Mumbajus | 43500 |
8 | Neeru Sharma | 29 | Pune | 40 000 |
7 | Rohitas Srivastava | 19 | Ahmadabadas | 38 000 |
5 | Balwantas Singhas | Keturi | Varanasis | 36 000 |
4 | Ritešas Jadavas | 36 | Azamgarh | 26 000 |
6 | Mahešas Šarmas | 26 | Mathura | 22000 |
1 | Himani Gupta | dvidešimt vienas | Modi Nagar | 22000 |
2 | Šiva Tiwari | 22 | Bhopalas | 21 000 |
Visi klientų lentelėje esantys įrašai rodomi kliento atlyginimo mažėjimo tvarka.
4 pavyzdys:
Parašykite užklausą, kad surūšiuotumėte įrašus mažėjimo tvarka pagal klientų amžių, saugomą klientų lentelėje.
Užklausa:
mysql> SELECT *FROM customers ORDER BY Age DESC;
Čia SELECT užklausoje stulpelyje „Amžius“ taikoma sąlyga ORDER BY, kad būtų rūšiuojami įrašai. DESC raktinis žodis surūšiuos įrašus mažėjimo tvarka.
Gausite tokią išvestį:
ID | vardas | Amžius | Adresas | Atlyginimas |
---|---|---|---|---|
3 | Ajeetas Bhargavas | Keturi | Meerut | 65 000 |
5 | Balwantas Singhas | Keturi | Varanasis | 36 000 |
4 | Ritešas Jadavas | 36 | Azamgarh | 26 000 |
10 | Sahilas Šeichas | 35 | Aurangabadas | 68800 |
9 | Akašas Jadavas | 32 | Mumbajus | 43500 |
8 | Neeru Sharma | 29 | Pune | 40 000 |
6 | Mahešas Šarmas | 26 | Mathura | 22000 |
2 | Šiva Tiwari | 22 | Bhopalas | 21 000 |
1 | Himani Gupta | dvidešimt vienas | Modi Nagar | 22000 |
7 | Rohitas Srivastava | 19 | Ahmadabadas | 38 000 |
Visi klientų lentelėje esantys įrašai rodomi mažėjimo tvarka pagal kliento amžių.
Apsvarstykite, kad turime kitą lentelę pavadinimu agentai su šiais įrašais:
PAGALBA | vardas | Darbo zona | Pelno_procentai | Kontaktinis numeris | Atlyginimas |
---|---|---|---|---|---|
1 | Gurpreet Singh | Bengalūras | 1 | 9989675432 | 43 000 |
2 | Sakšis Kumaris | Čenajus | 5 | 8190567342 | 25 000 |
3 | Prachi Desai | Mumbajus | 2 | 9056123432 | 60 000 |
4 | Shivani Daugiau | Pune | 3 | 8894236789 | 35 500 |
5 | Pallavi Singhas | Delis | 4 | 7798092341 | 38700 |
6 | Rohini Kulkarni | Ambala | 8 | 7890945612 | 25670 |
7 | Shweta pasakė | Čandigaras | 6 | 8898786453 | 31670 |
8 | Sonakshi Tiwari | Udaipuras | 2 | 9809453421 | 25050 |
9 | Anuška Tripathi | Ant pirštų | 9 | 8909124326 | 38 000 |
10 | Devika Šarma | Goa | 7 | 7864523145 | 44050 |
1 pavyzdys:
Parašykite užklausą, kad surūšiuotumėte įrašus mažėjančia agentų lentelėje saugomų agentų pavadinimų tvarka.
Užklausa:
mysql> SELECT *FROM agents ORDER BY Name DESC;
Čia SELECT užklausoje stulpelyje „Pavadinimas“ taikoma sąlyga ORDER BY, kad būtų rūšiuojami įrašai. DESC raktinis žodis surūšiuos įrašus mažėjimo tvarka.
Gausite tokią išvestį:
PAGALBA | vardas | Darbo zona | Pelno_procentai | Kontaktinis numeris | Atlyginimas |
---|---|---|---|---|---|
8 | Sonakshi Tiwari | Udaipuras | 2 | 9809453421 | 25050 |
7 | Shweta pasakė | Čandigaras | 6 | 8898786453 | 31670 |
4 | Shivani Daugiau | Pune | 3 | 8894236789 | 35 500 |
2 | Sakšis Kumaris | Čenajus | 5 | 8190567342 | 25 000 |
6 | Rohini Kulkarni | Ambala | 8 | 7890945612 | 25670 |
3 | Prachi Desai | Mumbajus | 2 | 9056123432 | 60 000 |
5 | Pallavi Singhas | Delis | 4 | 7798092341 | 38700 |
1 | Gurpreet Singh | Bengalūras | 1 | 9989675432 | 43 000 |
10 | Devika Šarma | Goa | 7 | 7864523145 | 44050 |
9 | Anuška Tripathi | Ant pirštų | 9 | 8909124326 | 38 000 |
Visi agentų lentelėje esantys įrašai rodomi agento vardo mažėjimo tvarka.
2 pavyzdys:
Parašykite užklausą, norėdami surūšiuoti įrašus agentų lentelėje saugomo agento atlyginimo mažėjimo tvarka.
Užklausa:
mysql> SELECT *FROM agents ORDER BY Salary DESC;
Čia SELECT užklausoje stulpelyje „Atlyginimas“ taikoma sąlyga ORDER BY, kad būtų rūšiuojami įrašai. DESC raktinis žodis surūšiuos įrašus mažėjimo tvarka.
Gausite tokią išvestį:
kaip vykdyti scenarijų
PAGALBA | vardas | Darbo zona | Pelno_procentai | Kontaktinis numeris | Atlyginimas |
---|---|---|---|---|---|
3 | Prachi Desai | Mumbajus | 2 | 9056123432 | 60 000 |
10 | Devika Šarma | Goa | 7 | 7864523145 | 44050 |
1 | Gurpreet Singh | Bengalūras | 1 | 9989675432 | 43 000 |
5 | Pallavi Singhas | Delis | 4 | 7798092341 | 38700 |
9 | Anuška Tripathi | Ant pirštų | 9 | 8909124326 | 38 000 |
4 | Shivani Daugiau | Pune | 3 | 8894236789 | 35 500 |
7 | Shweta pasakė | Čandigaras | 6 | 8898786453 | 31670 |
6 | Rohini Kulkarni | Ambala | 8 | 7890945612 | 25670 |
8 | Sonakshi Tiwari | Udaipuras | 2 | 9809453421 | 25050 |
2 | Sakšis Kumaris | Čenajus | 5 | 8190567342 | 25 000 |
Visi agentų lentelėje esantys įrašai rodomi agento atlyginimo mažėjimo tvarka.
3 pavyzdys:
Parašykite užklausą, kad surūšiuotumėte įrašus mažėjančia agento darbo srities, saugomos agentų lentelėje, tvarka.
Užklausa:
mysql> SELECT *FROM agents ORDER BY WorkArea DESC;
Čia SELECT užklausoje stulpelyje „Darbo sritis“ taikoma sąlyga ORDER BY, kad būtų rūšiuojami įrašai. DESC raktinis žodis surūšiuos įrašus mažėjimo tvarka.
Gausite tokią išvestį:
PAGALBA | vardas | Darbo zona | Pelno_procentai | Kontaktinis numeris | Atlyginimas |
---|---|---|---|---|---|
9 | Anuška Tripathi | Ant pirštų | 9 | 8909124326 | 38 000 |
8 | Sonakshi Tiwari | Udaipuras | 2 | 9809453421 | 25050 |
4 | Shivani Daugiau | Pune | 3 | 8894236789 | 35 500 |
3 | Prachi Desai | Mumbajus | 2 | 9056123432 | 60 000 |
10 | Devika Šarma | Goa | 7 | 7864523145 | 44050 |
5 | Pallavi Singhas | Delis | 4 | 7798092341 | 38700 |
2 | Sakšis Kumaris | Čenajus | 5 | 8190567342 | 25 000 |
7 | Shweta pasakė | Čandigaras | 6 | 8898786453 | 31670 |
1 | Gurpreet Singh | Bengalūras | 1 | 9989675432 | 43 000 |
6 | Rohini Kulkarni | Ambala | 8 | 7890945612 | 25670 |
Visi agentų lentelėje esantys įrašai rodomi agento darbo srities mažėjimo tvarka.
4 pavyzdys:
Parašykite užklausą, kad surūšiuotumėte įrašus mažėjančia agento pelno procentine tvarka, saugoma agentų lentelėje.
Užklausa:
mysql> SELECT *FROM agents ORDER BY Profit_Percent DESC;
Čia SELECT užklausoje stulpelyje „Pelno_procentas“ taikoma sąlyga ORDER BY, kad būtų rūšiuojami įrašai. DESC raktinis žodis surūšiuos įrašus mažėjimo tvarka.
Gausite tokią išvestį:
PAGALBA | vardas | Darbo zona | Pelno_procentai | Kontaktinis numeris | Atlyginimas |
---|---|---|---|---|---|
9 | Anuška Tripathi | Ant pirštų | 9 | 8909124326 | 38 000 |
6 | Rohini Kulkarni | Ambala | 8 | 7890945612 | 25670 |
10 | Devika Šarma | Goa | 7 | 7864523145 | 44050 |
7 | Shweta pasakė | Čandigaras | 6 | 8898786453 | 31670 |
2 | Sakšis Kumaris | Čenajus | 5 | 8190567342 | 25 000 |
5 | Pallavi Singhas | Delis | 4 | 7798092341 | 38700 |
4 | Shivani Daugiau | Pune | 3 | 8894236789 | 35 500 |
3 | Prachi Desai | Mumbajus | 2 | 9056123432 | 60 000 |
8 | Sonakshi Tiwari | Udaipuras | 2 | 9809453421 | 25050 |
1 | Gurpreet Singh | Bengalūras | 1 | 9989675432 | 43 000 |
Visi agentų lentelėje esantys įrašai rodomi mažėjančia agento pelno procento tvarka.