Ko'pincha jadvalda bir xil qiymat bir necha marta uchraydi. Masalan, bizning onlayn do'konimizdagi mahsulotlar jadvaliga qarang:
| id | nomi | kategoriya | narx | ombor |
|---|---|---|---|---|
| 1 | Telefon | Elektronika | 5000000 | 10 |
| 2 | Noutbuk | Elektronika | 12000000 | 5 |
| 3 | Quloqchin | Elektronika | 300000 | 50 |
| 4 | Kitob | Kitoblar | 50000 | 100 |
| 5 | Daftar | Kanstovar | 8000 | 200 |
| 6 | Ruchka | Kanstovar | 3000 | 500 |
| 7 | Stol | Mebel | 800000 | 15 |
| 8 | Stul | Mebel | 250000 | 40 |
Agar biz faqat kategoriya ustunini chiqarsak:
SELECT kategoriya FROM mahsulotlar;natija quyidagicha bo'ladi:
Elektronika
Elektronika
Elektronika
Kitoblar
Kanstovar
Kanstovar
Mebel
MebelKo'rib turganingizdek, Elektronika uch marta, Kanstovar va Mebel esa ikki martadan takrorlanmoqda. Ammo ba'zan bizga qanday kategoriyalar borligini bilish kifoya — har birini necha marta uchrashidan qat'i nazar. Bu yerda DISTINCT yordamga keladi.
DISTINCT so'zi SELECT dan keyin yoziladi va natijadagi takrorlanuvchi qatorlarni olib tashlaydi, ya'ni faqat noyob (takrorlanmas) qiymatlarni qoldiradi.
SELECT DISTINCT kategoriya FROM mahsulotlar;Endi har bir kategoriya faqat bir marta chiqadi:
Elektronika
Kitoblar
Kanstovar
MebelDISTINCT har doim SELECT so'zidan keyin, ustun nomidan oldin keladi.
Eslatma:
DISTINCTbutun qatorga ta'sir qiladi. Agar bir nechta ustun tanlasangiz, u faqat barcha ustunlari bir xil bo'lgan qatorlarni takror deb hisoblaydi.
Oldingi darsda o'rganganimizdek, ma'lumotlar bazasi natijalarni har doim ham bir xil tartibda qaytarmaydi. Shuning uchun aniq, takrorlanmas va tartiblangan ro'yxat olish uchun DISTINCT ni ORDER BY bilan birga ishlatamiz:
SELECT DISTINCT kategoriya FROM mahsulotlar ORDER BY kategoriya;Bu so'rov takrorlanmas kategoriyalarni alifbo tartibida chiqaradi:
Elektronika
Kanstovar
Kitoblar
MebelMuhim:
ORDER BYhar doim so'rovning oxirida yoziladi —DISTINCTdan keyin emas, balki butunSELECT ... FROM ...qismidan keyin.
Onlayn do'konda qanday kategoriyalar sotilishini bilmoqchimiz. mahsulotlar jadvalidagi takrorlanmas kategoriyalarni DISTINCT yordamida, alifbo tartibida chiqaruvchi so'rovni yozing.