MySQL-dəki "Var" və "Harada" ifadələri arasındakı fərq nədir? Hər kəsdən istifadə etmək nə vaxt məqsədəuyğundur?


cavab 1:

Yazıları məhdudlaşdırmaq üçün istifadə olunan bənd. və ya yalnız uyğun qeydlər əldə etmək.

Həm də qeydləri məhdudlaşdıran bəndlə eyni. Ancaq yalnız bir GroupBy bəndiniz varsa istifadə olunur. Qruplaşdırma bəndində sənədlərin dublikatları olduqda istifadə olunur və cəm, say, avq, maks, min və s. İstifadə edərək bir qeydə birləşdirmək istədikdə istifadə olunur.

Misal: Harada: SQL altında müştərilərin sifariş sayını tapa bilərsiniz: SEÇİM * müştəri_id = 25 ilə FROM sifarişləri.

Nümunə: SQL altında müştərilərin sifariş sayını tapa bilərsiniz: SELECT müştəri_id, COUNT (sifariş_id) FROM sifariş qrupu müştəri_id


cavab 2:

Əsas izahat budur ki, əvvəlcə filan filtrlər və sonra filtrlər. Bu HAVING'ın məcmu funksiyalar üçün istifadə edilməsinin səbəbidir - məlumat qeydləri WHERE vəziyyətinə görə yığılır.

SQL nümunəsi: 3-dən çox yaş eyni olduqda bütün istifadəçilər Mayk adını aldı

Seçin COUNT (*) nömrəsi, yaşı, adı İstifadəçinin olduğu yer = = "Mike" qrupu ilə sayı> 3 ilə

Bu necə işləyir: 1. MySql əvvəlcə Mike2 adı olan bütün istifadəçiləri seçir. Bütün istifadəçilər yaşa görə qruplaşdırılıb. Deyək ki, 34 yaşında 4 istifadəçi var. MySQL eyni yaş üçün yalnız bir qeyd / istifadəçi göstərir (34 yaşdan sonra bir qrup yaradın) .3. Yalnız indi MySql qruplaşdırılmış istifadəçiləri sayar və müəyyən bir qrupda neçə istifadəçinin olduğunu yoxlaya bilər.

Gördüyünüz kimi, bu əməliyyatlar müəyyən qaydada aparılmalıdır.

İndi bilmək vacibdir ki, HAVING-da istifadə etdiyiniz hər şey SELECT-də olmalıdır. Məsələn:

- Bu VƏZİF SEÇİM COUNT (*) nömrəsi, adı, yaşı GƏLİR istifadəçinin olduğu yer = <"" "ünvanı olan yaş qrupu - ünvanı seçilməyib - lakin bu VALID SEÇİM COUNT (*)) nömrə, Adı, YAŞAYAN İstifadəçi HARADA Adı = "Mayk" VƏ Ünvan <> "" QRUP YAXŞIĞI ilə Yaş> 30 - seçdiyimiz hər şeyi süzgəcdən keçirə bilərik.

Sürət səbəblərinə görə, indeksləri nəzərə almaq üçün harada istifadə etməlisiniz

Misalımızda, yaşın bir göstərici olduğunu düşünək. Yuxarıda göstərilən SQL sonrakılardan daha yavaşdır

İstifadəçi NƏZƏRİNİN (*) nömrəsini, adını, yaşını TƏLƏB EDİN adı = "Mike" VƏ ünvanı <> "" VƏ yaş> 30 - biz yaşla İNDEX QRUPU istifadə edirik - bütün ağır işlər görüləndən sonra HAVING istifadə etməyin.

Burada da yaxşı bir cavab tapa bilərsiniz. Harada vs HAVING (ikinci cavab güc hissəsini izah edir)


cavab 3:

Əsas izahat budur ki, əvvəlcə filan filtrlər və sonra filtrlər. Bu HAVING'ın məcmu funksiyalar üçün istifadə edilməsinin səbəbidir - məlumat qeydləri WHERE vəziyyətinə görə yığılır.

SQL nümunəsi: 3-dən çox yaş eyni olduqda bütün istifadəçilər Mayk adını aldı

Seçin COUNT (*) nömrəsi, yaşı, adı İstifadəçinin olduğu yer = = "Mike" qrupu ilə sayı> 3 ilə

Bu necə işləyir: 1. MySql əvvəlcə Mike2 adı olan bütün istifadəçiləri seçir. Bütün istifadəçilər yaşa görə qruplaşdırılıb. Deyək ki, 34 yaşında 4 istifadəçi var. MySQL eyni yaş üçün yalnız bir qeyd / istifadəçi göstərir (34 yaşdan sonra bir qrup yaradın) .3. Yalnız indi MySql qruplaşdırılmış istifadəçiləri sayar və müəyyən bir qrupda neçə istifadəçinin olduğunu yoxlaya bilər.

Gördüyünüz kimi, bu əməliyyatlar müəyyən qaydada aparılmalıdır.

İndi bilmək vacibdir ki, HAVING-da istifadə etdiyiniz hər şey SELECT-də olmalıdır. Məsələn:

- Bu VƏZİF SEÇİM COUNT (*) nömrəsi, adı, yaşı GƏLİR istifadəçinin olduğu yer = <"" "ünvanı olan yaş qrupu - ünvanı seçilməyib - lakin bu VALID SEÇİM COUNT (*)) nömrə, Adı, YAŞAYAN İstifadəçi HARADA Adı = "Mayk" VƏ Ünvan <> "" QRUP YAXŞIĞI ilə Yaş> 30 - seçdiyimiz hər şeyi süzgəcdən keçirə bilərik.

Sürət səbəblərinə görə, indeksləri nəzərə almaq üçün harada istifadə etməlisiniz

Misalımızda, yaşın bir göstərici olduğunu düşünək. Yuxarıda göstərilən SQL sonrakılardan daha yavaşdır

İstifadəçi NƏZƏRİNİN (*) nömrəsini, adını, yaşını TƏLƏB EDİN adı = "Mike" VƏ ünvanı <> "" VƏ yaş> 30 - biz yaşla İNDEX QRUPU istifadə edirik - bütün ağır işlər görüləndən sonra HAVING istifadə etməyin.

Burada da yaxşı bir cavab tapa bilərsiniz. Harada vs HAVING (ikinci cavab güc hissəsini izah edir)


cavab 4:

Əsas izahat budur ki, əvvəlcə filan filtrlər və sonra filtrlər. Bu HAVING'ın məcmu funksiyalar üçün istifadə edilməsinin səbəbidir - məlumat qeydləri WHERE vəziyyətinə görə yığılır.

SQL nümunəsi: 3-dən çox yaş eyni olduqda bütün istifadəçilər Mayk adını aldı

Seçin COUNT (*) nömrəsi, yaşı, adı İstifadəçinin olduğu yer = = "Mike" qrupu ilə sayı> 3 ilə

Bu necə işləyir: 1. MySql əvvəlcə Mike2 adı olan bütün istifadəçiləri seçir. Bütün istifadəçilər yaşa görə qruplaşdırılıb. Deyək ki, 34 yaşında 4 istifadəçi var. MySQL eyni yaş üçün yalnız bir qeyd / istifadəçi göstərir (34 yaşdan sonra bir qrup yaradın) .3. Yalnız indi MySql qruplaşdırılmış istifadəçiləri sayar və müəyyən bir qrupda neçə istifadəçinin olduğunu yoxlaya bilər.

Gördüyünüz kimi, bu əməliyyatlar müəyyən qaydada aparılmalıdır.

İndi bilmək vacibdir ki, HAVING-da istifadə etdiyiniz hər şey SELECT-də olmalıdır. Məsələn:

- Bu VƏZİF SEÇİM COUNT (*) nömrəsi, adı, yaşı GƏLİR istifadəçinin olduğu yer = <"" "ünvanı olan yaş qrupu - ünvanı seçilməyib - lakin bu VALID SEÇİM COUNT (*)) nömrə, Adı, YAŞAYAN İstifadəçi HARADA Adı = "Mayk" VƏ Ünvan <> "" QRUP YAXŞIĞI ilə Yaş> 30 - seçdiyimiz hər şeyi süzgəcdən keçirə bilərik.

Sürət səbəblərinə görə, indeksləri nəzərə almaq üçün harada istifadə etməlisiniz

Misalımızda, yaşın bir göstərici olduğunu düşünək. Yuxarıda göstərilən SQL sonrakılardan daha yavaşdır

İstifadəçi NƏZƏRİNİN (*) nömrəsini, adını, yaşını TƏLƏB EDİN adı = "Mike" VƏ ünvanı <> "" VƏ yaş> 30 - biz yaşla İNDEX QRUPU istifadə edirik - bütün ağır işlər görüləndən sonra HAVING istifadə etməyin.

Burada da yaxşı bir cavab tapa bilərsiniz. Harada vs HAVING (ikinci cavab güc hissəsini izah edir)