Ieteicams, 2024

Redaktora Izvēle

Starpība starp kur un ņemot klauzulu SQL

WHERE un HAVING klauzula galvenokārt tiek izmantota SQL vaicājumu paziņojumā, kas ļauj mums ierobežot kombināciju rezultātu attiecībās, izmantojot konkrētu predikātu. Galvenā atšķirība starp WHERE un HAVING ir tā, ka WHERE klauzula nosaka nosacījumus, ar kādiem izvēlēties attiecības (rindas) no attiecībām, tostarp, ja nepieciešams, pievienošanās nosacījumus. No otras puses, HAVING klauzula nosaka nosacījumu atlasītajām grupām, nevis atsevišķām grupām .

SQL apzīmē strukturēto vaicājumu valodu ; tā ir visaptveroša vai deklaratīva datu bāzes valoda, ko izmanto, lai piekļūtu datu bāzēm.

Salīdzinājuma diagramma

Salīdzināšanas pamatsKURTŪLĪT
PamataĪstenota rindu operācijās.Īstenota kolonnu operācijās.
LietotsViena rindaApkopota rinda vai grupas.
Datu ielādeTā tikai iegūst konkrētos datus no konkrētām rindām atbilstoši stāvoklim.Sākumā tiek iegūti pilnīgi dati, pēc tam atdalīti atbilstoši stāvoklim.
Kopējās funkcijasNevar parādīties WHERE klauzulā.Var parādīties HAVING klauzulā.
Lietots arSELECT un citi paziņojumi, piemēram, UPDATE, DELETE vai kāds no tiem.Nevar izmantot bez SELECT paziņojuma.
Uzvedies kāPriekšfiltrsPēcfiltrs
GROUP BYNāk pēc WHERE.Nāk pēc HAVING.

Ja noteikums ir definēts

SQL WHERE klauzula tiek izmantota, lai aprakstītu stāvokli laikā, kad dati tiek izgūti no vienas tabulas, vai savienojot ar vairākām tabulām. Ja konkrētais nosacījums ir izpildīts, tas tikai atgriež konkrēto vērtību no tabulas. WHERE klauzula tiek izmantota, lai pārnestu ierakstus un izgūtu tikai nepieciešamos ierakstus.

SQL arī īsteno loģiskos savienojumus un, vai, nevis WHERE klauzulu, kas pazīstams arī kā būla stāvoklis; nosacījumam jābūt patiesam, lai ielādētu ierakstus. Loģisko savienojumu izteiksmju operandos ir iesaistīti salīdzināšanas operatori, piemēram, <, <=, >, > =, = un . Šie salīdzināšanas operatori salīdzina virknes un aritmētiskās izteiksmes. To var izmantot SELECT, kā arī UPDATE, DELETE paziņojumos.

Pieņemsim piemēru. Tabulā, kas parādīta zemāk ar nosaukumu " Pārdošanas tabula", ir atribūti " Produkts " un " Pārdošanas apjoms ".

Lai aprēķinātu Total_sales no tālruņa un skaļruņiem, jāsagatavo šāds pieprasījums.

 SELECT Product, summa (Sales_amount) AS Total_sales no pārdošanas, kur produkts (tālrunis, runātāji) GROUP BY produkts; 

Sekojošā izvade ir rezultāts, kurā rindas tiek filtrētas vispirms, tiek izgūtas tālruņa un skaļruņu rindas, tad tiek veikta kopējā funkcija.

Noteikuma noteikšana

SQL nodrošina HAVING klauzulu, ko var izmantot kopā ar GROUP BY klauzulu. Šī HAVING klauzula palīdz iegūt vērtības grupām, kas atbilst noteiktiem nosacījumiem. WHERE klauzula var izmantot arī saistībā ar HAVING klauzulu atlases laikā, WHERE klauzula filtrē atsevišķu rindu. Pēc tam rindas tiek grupētas, un kopējie aprēķini tiek veikti, beidzot HAVING klauzula filtrē grupas.

Tā darbojas tāpat kā, ja netiek izmantots GROUP BY atslēgvārds. Grupas funkcijas, piemēram, min, max, avg, summa un skaits, var parādīties tikai divos punktos: SELECT un HAVING. Tas nodrošina nosacījumu, kas attiecas uz katras atribūtu grupas vērtību. Vienīgais ierakstu kopums, kas atbilst nosacījumam, tiks parādīts kā rezultāts.

Arī šeit mēs izmantojam tādu pašu piemēru kā WHERE klauzula un ņemot vērā to pašu „ pārdošanas ” tabulu. Kad mēs vēlamies aprēķināt Total_sales no tālruņa un skaļruņiem, izmantojot HAVING klauzulu, mēs uzrakstīsim šādu vaicājumu.

 SELECT Product, summa (Sales_amount) AS Total_sales NO pārdošanas grupas pēc produkta, kurā produkts ir (tālrunis, skaļruņi); 

Vaicājums rada šādu izeju, kurā produkti tiek izgūti vispirms, pēc tam tiek veikta kopējā funkcija (summa) un pēdējā grupā tiek filtrēti atšķirībā no WHERE klauzulas.

Kad mēs vēlamies atrast tikai tos produktus, kuros Total_sales ir lielāks par 1000. vaicājumu var rakstīt kā:

 SELECT Product, summa (Sales_amount) AS Total_sales no pārdošanas grupas pēc produkta vērtības (pārdošanas apjoms)> 1000; 

Ražotā produkcija ir:

To nevar veikt, izmantojot WHERE klauzulu, neskatoties uz HAVING, un tas rada kļūdas ziņojumu, jo WHERE klauzulu nevar izmantot kopā ar kopējo funkciju.

Galvenās atšķirības starp kur un ņemot klauzulu

  1. WHERE klauzula tiek izmantota rindu operācijās un tiek pielietota vienā rindā, bet kolonnu operācijās tiek izmantota HAVING klauzula, un to var piemērot apkopotajām rindām vai grupām.
  2. WHERE klauzulā vēlamie dati tiek ielādēti atbilstoši piemērojamam nosacījumam. Savukārt HAVING klauzula iegūst visus datus, tad nodalīšana tiek veikta atbilstoši stāvoklim.
  3. Kopējās funkcijas, piemēram, min, summa, max, avg, nekad nevar parādīties kopā ar WHERE klauzulu. Pretēji šīm funkcijām var būt klauzula HAVING.
  4. HAVING klauzula nevar tikt izmantota bez SELECT paziņojuma. Turpretī, kur var izmantot ar SELECT, UPDATE, DELETE utt.
  5. KUR klauzula darbojas kā iepriekšējs filtrs, bet HAVING klauzula darbojas kā pēcfiltrs.
  6. WHERE klauzula, ko izmanto kopā ar GROUP BY, nāk pirms GROUP BY. Tas nozīmē, ka WHERE filtru rindas pirms apkopoto aprēķinu veikšanas. No otras puses, HAVING nāk pēc GROUP BY, kas nozīmē, ka pēc filtrēšanas tiek veikti filtri.

Secinājums

WHERE un HAVING klauzula darbojas vienādi, izņemot papildu funkciju, kas HAVING klauzula ir populāra. HAVING klauzula var efektīvi strādāt ar summētām funkcijām, kamēr WHERE nevar darboties ar kopējām funkcijām.

Top