DISTINCT, лакап аттар жана туюнтмалар
Натыйжаны тартипке келтир, мамычаларды кайра ата жана SELECT ичинде эсепте
SELECT суроосу мамычаларды сакталгандай эле көрсөтүүгө милдеттүү эмес. Кайталанган маанилерди DISTINCT менен жашырса болот, мамычаларга ыңгайлуу ат лакап аттар аркылуу берсе болот, ал тургай price * quantity же CONCAT(...) сыяктуу туюнтмалар менен таптакыр жаңы маанилерди эсептесе болот.
- натыйжадан кайталанган саптарды
SELECT DISTINCTменен алып салуу, - мамычаны же таблицаны
ASсөзү менен лакап ат аркылуу кайра атоо, SELECTичинде арифметика (+ - * /) жасоо,CONCAT()менен текстти бириктирүү,- эмне сакталат жана эмне жөн гана көрсөтүлөт дегендин айырмасын билүү.
0. Биздин мисал таблица
Бул беттеги ар бир суроо products деген бир кичинекей дүкөн таблицасын колдонот. Ал мындай түзүлүп, толтурулган:
CREATE TABLE products (
id INT,
name VARCHAR(50),
category VARCHAR(50),
price INT,
quantity INT
);
INSERT INTO products (id, name, category, price, quantity) VALUES
(1, 'Notebook', 'Stationery', 3, 10),
(2, 'Pen', 'Stationery', 1, 50),
(3, 'Backpack', 'Bags', 20, 5),
(4, 'Pencil', 'Stationery', 1, 30),
(5, 'Lunchbox', 'Bags', 8, 12);
Демек, бүт таблица мындай көрүнөт:
| id | name | category | price | quantity |
|---|---|---|---|---|
| 1 | Notebook | Stationery | 3 | 10 |
| 2 | Pen | Stationery | 1 | 50 |
| 3 | Backpack | Bags | 20 | 5 |
| 4 | Pencil | Stationery | 1 | 30 |
| 5 | Lunchbox | Bags | 8 | 12 |
Байкасаңыз, category мамычасы кайталанат: "Stationery" үч жолу, "Bags" эки жолу кездешет. Муну кийинки бөлүм үчүн эсиңизде тутуңуз.
1. DISTINCT: айырмаланган маанилер гана
Кээде мамычада бир эле маани кайра-кайра кездешет, ал эми сизге ар бир айырмаланган маанини бир гана жолу көрүү керек. DISTINCT сөзү дал ушуну жасайт: ал кайталанган саптарды таштап, уникалдууларын гана калтырат.
Түрдүү түстөгү момпосуйлар салынган баштыкты элестетиңиз. Аларды төксөңүз кызыл, кызыл, көк, кызыл, көктү көрөсүз. Бирок досуңуз "баштыкта кайсы түстөр бар?" деп сураса, сиз жөн гана "кызыл жана көк" деп жооп бересиз — ар бир түстү бир жолу айтасыз. DISTINCT ушуну жасайт.
DISTINCTсиз бардык категорияларды сурасаңыз, ар бир сапка кайталоо чыгат:
SELECT category
FROM products;
| category |
|---|
| Stationery |
| Stationery |
| Bags |
| Stationery |
| Bags |
Эми SELECT дан кийин дароо DISTINCT кошуңуз — кайталоолор жоголот:
SELECT DISTINCT category
FROM products;
| category |
|---|
| Stationery |
| Bags |
Беш сап экиге айланды, анткени айырмаланган категория экөө гана.
DISTINCT ар бир өзүнчө маанини эмес, ошол мамычалардын ар бир уникалдуу айкалышын калтырат. Мисалы, SELECT DISTINCT category, price FROM products; ар бир айырмаланган (category, price) жубу үчүн сапты калтырат.