DatoriFailu tipi

SQL atšķiras: apraksts, piemēri, īpašības

Bieži vien, kad jūs izmantojat SQL iegūt datus no tabulām, lietotājs saņem lieki dati ir esamība nosaka absolūti identiski dublikātu rindās. Lai izvairītos no šādas situācijas, izmantojiet SQL atsevišķu argumentu teikumā Select. Šis raksts apspriedīs piemērus, izmantojot šo argumentu, kā arī situācijas, kad pieteikums būtu pamestu ar argumentu.

Pirms mēs turpinām izskatīt konkrētus piemērus, izveidot datu bāzi nepieciešamo pāris tabulas.

preparāts tabula

Iedomājieties, ka mums ir datu bāze tiek glabāta informācija par fonu, kas sniegta divos tabulās. Šī tabula oboi (tapetes), ar ID laukiem (unikāls identifikators), no veida (veidu tapetes -. Papīrs, vinila, uc), krāsu (krāsa), kas struktūrai (struktūra) un cena (cena). Un galds Ostatki (atlikumi) ar id_oboi laukiem (atsauce uz unikālo identifikatoru tabulā Oboi) un skaits (skaits rullīšiem krājumā).

Aizpildiet datu tabulu. Tabulā pievienot tapeti 9 ieraksti:

Oboi

id

tips

krāsa

struct

cena

1

papīrs

daudzkrāsains

reljefi

56,9

2

papīrs double-slāņu

bēšs

gluds

114.8

3

vinyl

oranžs

reljefi

504

4

aitas vilna

bēšs

reljefi

1020,9

5

papīrs double-slāņu

bēšs

gluds

150,6

6

papīrs

daudzkrāsains

gluds

95,4

7

vinyl

brūns

gluds

372

8

aitas vilna

balts

reljefi

980,1

9

audums

sārts

gluds

1166,5

Tabula ar paliekām - un deviņām ierakstiem:

Ostatki

id_oboi

skaitīt

1

8

2

12

3

24

4

9

5

16

6

7

7

24

8

32

9

11

Mēs pārejam pie aprakstu atsevišķu rīkojuma SQL.

Vieta atšķirīga Select klauzulā

atšķirīgs arguments jānovieto tūlīt pēc Izvēlēties atslēgvārdu vaicājumiem. Viņš piemēro visām kolonnām norādītas teikuma Select, jo tas tiks izslēgts no gala vaicājuma rezultāts ir absolūti identiski stīgas. Tātad, kad ir pietiekami, lai norādītu, rakstot SQL «izvēlēties atšķirīgu» pieprasījumu. Izņēmums ir izmantot atšķirīgu iekšpusē apkopojuma funkcijas, kas izskatās pēc nedaudz vēlāk.

Būtu jāatceras, ka lielākā daļa no datubāzes un neatpazīst jūsu veida pieprasījumu:

SELECT atšķirīgu Ostatki.Count, atšķirīgu Oboi. *

NO oboi

INNER JOIN Ostatki ON Oboi.id = Ostatki.id_oboi

Tur netika uzskatīts par argumentu vairākas reizes vai reizi norādīts, bet pirms otrā, trešā vai citu izvēlētajā kolonnā. Jūs saņemsiet kļūdu, atsaucoties uz kļūdu sintaksi.

Pieteikuma atšķirīgi vaicājumi standarts

Ir skaidrs, ka ar pareizu ēku struktūru galdiem un aizpildot tos vienā tabulā izslēgt situāciju, kad ir absolūti identiski stīgas. Tāpēc vaicājuma izpildes «Izvēlieties atšķirīgs *» ar paraugu vienā tabulā ir nepraktiska.

Aplūkosim situāciju, kad mums ir nepieciešams zināt, kāda veida mums ir tapetes, tikai ērtības, lai kārtotu pēc veida:

SELECT Oboi.type

NO Oboi secībā pēc veida

Un iegūt rezultātus:

tips

papīrs

papīrs

papīrs double-slāņu

papīrs double-slāņu

vinyl

vinyl

audums

aitas vilna

aitas vilna

Kā redzams tabulā ir dublēt rindas. Ja mēs pievienot priekšlikumu Atlasīt atšķirīgi:

SELECT atšķirīgu Oboi.type

NO Oboi secībā pēc veida

mēs iegūtu rezultātu bez atkārtošanās:

tips

papīrs

papīrs double-slāņu

vinyl

audums

aitas vilna

Tādējādi, ja pareizi ievadīt datus tabulā, tad uzreiz pēc tālruņa zvanu vai lūguma pircējiem, mēs varam atbildēt, ka šķidrums tapetes, stikla un akrila tapetes pieejami veikalā nav. Ņemot vērā, ka klāsts veikalu parasti neaprobežojas tikai ar vienu simts tapetes, skatīt sarakstu bez unikālu veidu, būtu diezgan darbietilpīga.

Piemērošana atsevišķu kopējo funkcijām

SQL atšķirīgs argumentu var lietot ar jebkuru kopējo funkciju. Bet Min un Max tās piemērošanu būs spēkā, bet, aprēķinot summu, vai vidējo vērtību, ir reti situācija, kad neviens būtu jāņem vērā atkārtojumus.

Pieņemsim, ka mēs vēlamies, lai pārbaudītu spējas mūsu noliktavā un nosūtīt šo lūgumu, aprēķina kopskaits ruļļu noliktavā:

SELECT summa (Ostatki.count)

NO Ostatki

Pieprasījums dos atbildi 143. Tomēr, ja mēs mainīsies uz:

SELECT summa (atšķirīgi Ostatki.count)

NO Ostatki

mēs iegūstot kopējo 119, kā fonu daļu numuriem 3 un 7 ir noliktavā tādā pašā apmērā. Tomēr ir skaidrs, ka atbilde ir nepareiza.

Visbiežāk izmanto SQL atšķirīgi funkciju skaits. Tātad, mēs varam viegli uzzināt, cik daudz unikālu veidu tapetes, mums ir:

SELECT skaits (atšķirīgs Oboi.type)

NO oboi

Un iegūt rezultātu 5 - parasto papīru un divslāņu vinila un neausta auduma. Protams visi redzējuši reklāmu, piemēram: "Tikai mums ir vairāk nekā 20 dažādu veidu tapetes", kas nozīmē, ka šis veikals ir ne tikai pāris ducis ruļļi un dažādi tapešu mūsdienu veidiem.

Tas ir interesanti, ka tajā pašā vaicājumu, jūs varat norādīt vairākas funkcijas, piemēram, Count atribūtu DISTINCT, un bez tā. Tas ir vienīgais situācija, kad atšķirīga Select'e var būt klāt vairākas reizes.

Kad atteikties izmantot argumentu

No izmantošana SQL atšķirīgu argumentu jāatsakās vienā no diviem gadījumiem:

  1. Jums veikt izvēli tabulu, un ir pārliecināti par unikālu vērtību katram. Šajā gadījumā, izmantojot argumentu ir nepiemērots, jo tas ir papildu slodze uz servera vai klienta (atkarībā no DBVS veida).
  2. Vai jums bail zaudēt savus datus. Ļaujiet mums paskaidrot.

Pieņemsim, ka boss lūdz jūs uzskaitīt tapetes, kas jums ir, ar norādi tikai divas kolonnas - veidu un krāsu. No ieradumu, jūs piešķirat arguments atšķirīgs:

SELECT atšķirīgu Oboi.type, Oboi.color

NO oboi

ORDER BY Oboi.type

Un - zaudēt dažus datus:

tips

krāsa

papīrs

daudzkrāsains

papīrs double-slāņu

bēšs

vinyl

brūns

vinyl

oranžs

audums

sārts

aitas vilna

bēšs

aitas vilna

balts

Tas var radīt iespaidu, ka papīra tapetes (parasto un dual-layer) mums ir tikai viens prātā, patiesībā, pat mūsu mazajā tabulā divu rakstu (kā rezultātā bez atšķiras):

tips

krāsa

papīrs

daudzkrāsains

papīrs

daudzkrāsains

papīrs double-slāņu

bēšs

papīrs double-slāņu

bēšs

vinyl

brūns

vinyl

oranžs

audums

sārts

aitas vilna

balts

aitas vilna

bēšs

Tādēļ, kā rakstiski jebkuru pieprasījumu ar argumentu atšķirīgu nepieciešamību būt uzmanīgiem un ir kompetenta lemt par tās piemērošanu, atkarībā no uzdevuma.

alternatīva atšķiras

Pretēji atsevišķu - Visi argumentu. Savā pieteikumā dublikāti rindas tiek glabāti. Bet kā noklusējuma datu bāzē un uzskata, ka tas ir nepieciešams, lai parādītu visas vērtības, argumentu visi - tas ir drīzāk kvalifikācijas par faktisko funkciju argumentu. Mēs ceram, ka jūs tagad saprotat, ka atšķirīga (SQL) tiek izmantots. Apraksts sniegt jums pilnīgu informāciju par iespējām, izmantojot šo argumentu dažādu problēmu risināšanā. Galu galā, kā izrādījās, pat tik vienkāršu argumentu savā pieteikumā slēpj ļoti reālu iespēju zaudēt dažus datus un neprecīzu informāciju.

Similar articles

 

 

 

 

Trending Now

 

 

 

 

Newest

Copyright © 2018 lv.birmiss.com. Theme powered by WordPress.