SQL ORDER BY va LIMIT — tartiblash

SELECT ma’lumotni oldi, WHERE uni filtrladi. Lekin natija baza saqlagan tartibda chiqadi. Ko’pincha uni tartiblash kerak bo’ladi: “eng arzondan qimmatga” yoki “alifbo bo’yicha”. Bu darsda ORDER BY bilan tartiblashni va LIMIT bilan natijani cheklashni ko’ramiz.

mahsulotlar jadvali:

idnomnarxsonituri
1Olma800050meva
2Non3000120non
3Sut1200030sut mahsuloti
4Choy1500040ichimlik
5Banan1400025meva
6Qatiq90000sut mahsuloti
7Suv4000200ichimlik
8Guruch1800060don

ORDER BY — tartiblash

ORDER BY dan keyin qaysi ustun bo’yicha tartiblashni yozasiz. Standart holda o’sish tartibida (kichikdan kattaga):

SELECT nom, narx FROM mahsulotlar ORDER BY narx;

Natija — arzondan qimmatga:

nomnarx
Non3000
Suv4000
Olma8000
Qatiq9000
Sut12000
Banan14000
Choy15000
Guruch18000

DESC — kamayish tartibi

Kattadan kichikka kerak bo’lsa, ustun nomidan keyin DESC qo’shiladi:

SELECT nom, narx FROM mahsulotlar ORDER BY narx DESC;

O’zingiz ishga tushirib ko’ring — so’rovni tahrirlashingiz ham mumkin:

SQL · namuna baza

Natija boshida eng qimmati turadi: Guruch (18000), Choy (15000), Banan (14000) va hokazo.

Matnni tartiblash

Son kabi matn ham tartiblanadi — alifbo bo’yicha:

SELECT nom FROM mahsulotlar ORDER BY nom;

Natija alifbo tartibida: Banan, Choy, Guruch, Non, Olma, Qatiq, Sut, Suv. DESC qo’shsangiz — teskari, Suv dan Banan gacha.

Bir nechta ustun bo’yicha

Ustunlarni vergul bilan sanasangiz, avval birinchi ustun bo’yicha, teng bo’lganlar ichida ikkinchi bo’yicha tartiblanadi:

SELECT nom, turi, narx FROM mahsulotlar ORDER BY turi, narx;

Bu avval turini alifbo bo’yicha, har tur ichida narxni o’sish bo’yicha tartiblaydi:

nomturinarx
Guruchdon18000
Suvichimlik4000
Choyichimlik15000
Olmameva8000
Bananmeva14000
Nonnon3000
Qatiqsut mahsuloti9000
Sutsut mahsuloti12000

Ichimlik ichida Suv (4000) Choy (15000) dan oldin — chunki ikkinchi mezon narx o’sish tartibida.

LIMIT — qatorlar sonini cheklash

Ba’zan faqat dastlabki bir nechta qator kerak — “eng qimmat 3 mahsulot” kabi. Buning uchun LIMIT ishlatiladi:

SELECT nom, narx FROM mahsulotlar ORDER BY narx DESC LIMIT 3;

Natija — eng qimmat uchtasi:

nomnarx
Guruch18000
Choy15000
Banan14000

Bu yerda buyruqlar birga ishladi: avval ORDER BY narx DESC tartibladi, keyin LIMIT 3 faqat birinchi uchtasini oldi.

OFFSET — boshidan tashlab yuborish

OFFSET dastlabki bir nechta qatorni o’tkazib yuboradi. “4-o’rindan boshlab” kabi — sahifalashda (pagination) qulay:

SELECT nom, narx FROM mahsulotlar ORDER BY narx DESC LIMIT 3 OFFSET 2;

Bu kamayish tartibida birinchi 2 tani (Guruch, Choy) tashlab, keyingi 3 tani beradi: Banan (14000), Sut (12000), Qatiq (9000).

Amaliy mashq

Tartiblang va cheklang:

  1. Mahsulotlarni narx bo’yicha o’sish tartibida chiqaring;
  2. DESC qo’shib, kamayish tartibiga o’tkazing;
  3. LIMIT 3 bilan faqat eng qimmat uchtasini oling;
  4. OFFSET 3 qo’shib, keyingi uchtasini oling;
  5. ikki ustun bo’yicha tartiblang: avval turi, keyin narx;
  6. ORDER BY soni DESC LIMIT 1 bilan omborda eng ko’p turgan mahsulotni toping — qaysi tovar chiqdi?

5-qadamda ustunlar tartibini almashtiring — natija o’zgardimi?

Qisqacha xulosa

  • ORDER BY ustun — natijani tartiblaydi; standart ASC (o’sish).
  • DESC — kamayish tartibi; matn alifbo bo’yicha tartiblanadi.
  • ORDER BY a, b — avval a, teng bo’lsa b bo’yicha.
  • LIMIT n — dastlabki n qatorni oladi; OFFSET m — dastlabki m tani tashlaydi.
  • Tartib: SELECT ... FROM ... WHERE ... ORDER BY ... LIMIT ....

Keyingi darsda INSERT bilan bazaga yangi ma’lumot qo’shishni ko’ramiz — shu paytgacha faqat o’qidik, endi yozamiz.

Bu dars foydali bo'ldimi?

—
— marta ko'rildi