4.1 LIMIT

Kung inaasahan mong magbabalik ng masyadong maraming data ang iyong query sa SQL, maaari mong limitahan ang maximum na bilang nang maaga. Pagkatapos ng lahat, ang mga talahanayan ay maaaring maglaman ng libu-libo o kahit milyon-milyong mga hilera.

Pinapadali ng SQL na limitahan ang bilang ng mga hilera sa resulta ng isang query gamit ang LIMIT. Ang keyword na ito ay ginagamit sa pinakadulo ng SQL query at ganito ang hitsura:

LIMIT quantity

Sumulat tayo ng query laban sa talahanayan ng produkto, na naglalaman ng listahan ng mga produkto ng aming tindahan. Ngunit dahil mayroon kaming isang napaka-matagumpay na tindahan at nagbebenta kami ng maraming mga produkto, nais naming makuha lamang ang unang 10 linya ng sagot. Narito ang magiging hitsura ng kahilingang iyon:

SELECT * FROM product
LIMIT 10

At makuha namin ang sumusunod na resulta ng query:

id pangalan tatak presyo bilangin
1 mesa IKEA 20.00 15
2 upuan IKEA 5.00 45
3 Sofa IKEA 80.00 10
4 kama IKEA 75.00 10
5 Closet Bosch 125.00 15
6 istante istante 25.00 114
7 TV LG 350.00 4
8 lampara LG 15.00 100
9 Dresser IKEA 99.00 10
10 Plato Bosch 199.00 10

Ngayon hihilingin lamang namin ang unang 5 mga hilera. Narito ang magiging hitsura ng kahilingang iyon:

SELECT * FROM product
LIMIT 5

Nakukuha namin ang sumusunod na resulta ng query:

id pangalan tatak presyo bilangin
1 mesa IKEA 20.00 15
2 upuan IKEA 5.00 45
3 Sofa IKEA 80.00 10
4 kama IKEA 75.00 10
5 Closet Bosch 125.00 15

4.2 OFFSET

Huling beses natutunan namin kung paano limitahan ang bilang ng mga linya sa tugon ng server. At ngayon, sa halip na libu-libong mga hilera mula sa talahanayan ng produkto, maaari nating makuha ang unang 10 mga hilera at ipakita ang mga ito sa user. Ito ay perpekto. Ngunit paano namin ipapakita ang pangalawang 10 hilera? At ang pangatlo?

Kung isusulat natin ang LIMIT 20, o LIMIT 30, hindi ba ibabalik ng server ang 20 at 30 row ayon sa pagkakabanggit?

Ito ay para sa kasong ito na ang SQL ay may espesyal na keyword OFFSETkung saan maaari mong hilingin sa server na laktawan ang N linya sa tugon nito. Ang keyword na ito ay ginagamit sa pinakadulo ng SQL query (pagkatapos LIMIT) at mukhang:

OFFSET quantity

Sumulat tayo ng query sa talahanayan ng produkto at subukang makakuha ng mga talaan 11 hanggang 15. Sa madaling salita, hinihiling namin sa server na ibalik sa amin ang 5 row, ngunit laktawan muna ang unang 10 row ng tugon. Narito ang magiging hitsura ng kahilingang iyon:

SELECT * FROM product
LIMIT 5
OFFSET 10

Nakukuha namin ang sumusunod na resulta ng query:

id pangalan tatak presyo bilangin
labing-isa Silyon Bosch 44.00 8
12 palayok ng bulaklak Smartflower 99.00 9
13 Tumayo IKEA 100.00 10

3 row lang ang ibinalik ng server, ibig sabihin, may kabuuang 13 row sa table namin. Nilaktawan ng server ang unang 10 at ibinalik ang susunod na 5.

4.3 PUMILI NG DISTINCT

Ang isa pang kapaki-pakinabang na keyword ay DISTINCT. Ginagamit ito kapag may mga duplicate na tala sa talahanayan at gusto naming alisin ang mga duplicate.

Saan nagmumula ang mga duplicate sa aming talahanayan? Maaaring walang mga duplicate sa talahanayan, ngunit bilang resulta ng query, ito ay madali. Sumulat tayo ng query na magbabalik ng mga tatak ng lahat ng produkto na ibinebenta namin. Narito ang magiging hitsura ng kahilingang iyon:

SELECT brand FROM product

Nakukuha namin ang sumusunod na resulta ng query:

tatak
IKEA
IKEA
IKEA
IKEA
Bosch
Bosch
LG
LG
IKEA
Bosch
Bosch
Smartflower
IKEA

Madaling makita na may mga duplicate na row sa table na ito. Ito ay upang matiyak na walang mga duplicate at kailangan mong gamitin ang keyword DISTINCT. Narito ang magiging hitsura ng naitama na kahilingan:

SELECT DISTINCT brand
FROM product

Nakukuha namin ang sumusunod na resulta ng query:

tatak
IKEA
Bosch
LG
Smartflower

Mas mabuti. Hindi ba? ;)

4.4 ORDER NI

At sa wakas nakuha na namin ang pag-uuri . Upang ayusin ang mga resulta ng isang query, kailangan mong gamitin ang keyword ORDER BY. Sa teknikal, ito ay dalawang salita, ngunit ang kakanyahan ay hindi mahalaga. Dalawang salita, isang operator.

Dapat itong isulat pagkatapos ng keyword WHERE, ngunit bago LIMITat OFFSET. Kung sumulat ka ORDER BYpagkatapos ng LIMIT, ang SQL server ay magbabalik lamang ng isang error sa iyo.

Sa pangkalahatan, ganito ang hitsura ng operator na ito:

ORDER BY column order

Kung saan ang column ay ang pangalan ng column sa resulta ng talahanayan / pag-uuri. At ang pagkakasunud-sunod ay ang pagkakasunud-sunod.

Ang pagkakasunud-sunod ay maaaring may tatlong uri:

  • ASC(mula sa Ascending) - pataas;
  • DESC(mula sa Pababa) - pababang;
  • Hindi tinukoy - gagamitinASC

Sumulat tayo ng query na magbabalik ng listahan ng mga produkto na pinagsunod-sunod ayon sa presyo sa pataas na pagkakasunud-sunod. Narito ang magiging hitsura ng kahilingang iyon:

SELECT * FROM product
ORDER BY price ASC
LIMIT 10

Nakukuha namin ang sumusunod na resulta ng query:

id pangalan tatak presyo bilangin
2 upuan IKEA 5.00 45
8 lampara LG 15.00 100
1 mesa IKEA 20.00 15
6 istante Bosch 25.00 114
labing-isa Silyon Bosch 44.00 8
4 kama IKEA 75.00 10
3 Sofa IKEA 80.00 10
12 palayok ng bulaklak Smartflower 99.00 9
9 Dresser IKEA 99.00 10
13 Tumayo IKEA 100.00 10

Makakakuha kami ng parehong resulta kung hindi namin tinukoy ang pagkakasunud-sunod ng pag-uuri - lalaktawan namin ang salita ASC.

4.5 ORDER BY sa maraming column

Pinapayagan ka ng operator ORDER BYna pag-uri-uriin ang resulta sa pamamagitan ng ilang mga hanay. Ito ay maaaring maging lubhang kapaki-pakinabang kapag ang unang column ay may maraming duplicate na elemento. Ang pangkalahatang anyo ng operator na ito ay ang mga sumusunod:

ORDER BY column 1 order 1, column 2 order 2, column 3 order 3

Sa madaling salita, kung pagkatapos ng pag-uuri ayon sa unang hanay ay mayroon kang ilang magkaparehong mga halaga sa malapit, pagkatapos ay pinagsunod-sunod sila ng pangalawang haligi, at iba pa.

Sumulat tayo ng query na mag-uuri sa ating mga produkto ayon sa brand, at para sa mga produktong may parehong brand - sa pababang pagkakasunud-sunod ng kanilang numero. Narito ang magiging hitsura ng kahilingang iyon:

SELECT * FROM product
ORDER BY brand ASC, count
DESC

Nakukuha namin ang sumusunod na resulta ng query:

id pangalan tatak presyo bilangin
6 istante Bosch 25.00 114
5 Closet Bosch 125.00 15
10 Plato Bosch 199.00 10
labing-isa Silyon Bosch 44.00 8
2 upuan IKEA 5.00 45
1 mesa IKEA 20.00 15
9 Dresser IKEA 99.00 10
13 Tumayo IKEA 100.00 10
4 kama IKEA 75.00 10
3 Sofa IKEA 80.00 10
8 lampara LG 15.00 100
7 TV LG 350.00 4
12 palayok ng bulaklak Smartflower 99.00 9

Tingnang mabuti ang talahanayan - pinagbukud-bukod ang mga row nito ayon sa pangalan ng brand (alphabetical order), at ang mga row na may parehong pangalan ng brand ay pinagbubukod-bukod ayon sa numero ng produkto sa pababang pagkakasunod-sunod (huling column).