Cili është ndryshimi midis deklaratave "Have" dhe "Ku" në MySQL? Kur është e përshtatshme të përdoren të gjithë?


përgjigje 1:

Klauzola ku përdoret për të kufizuar rekordet. ose për të marrë vetëm rekorde që përputhen.

Të pasurit është gjithashtu e njëjtë me atë klauzolë për të kufizuar rekordet. Sidoqoftë, përdoret vetëm nëse keni një klauzolë GroupBy. Klauzola e grupimit përdoret kur keni regjistrime të kopjuara dhe dëshironi të konsolidoheni në një rekord duke përdorur shumën, numërimin, mesataren, max, min, etj.

Shembull: Ku: Sipas SQL mund të gjesh numrin e porosive nga klientët: SELECT * NGA urdhrat me klient_id = 25.

Shembull për: Nën SQL mund të gjesh numrin e porosive nga klientët: SELECT konsumator_id, COUNT (urdhër_id) NGA urdhërat GRUPI NGA__


përgjigje 2:

Shpjegimi themelor është se KU FILROJE së pari dhe KU FILLET filtra më pas. Kjo është arsyeja pse HAVING përdoret për funksione të grumbulluara - regjistrimet e të dhënave grumbullohen sipas kushteve KU JU.

Shembull SQL: Të gjithë përdoruesit e quajtur Mike nëse më shumë se 3 janë në të njëjtën moshë

SELECT SEUNT (*) numri, mosha, emri NGA përdoruesi KU KU emër = "Mike" GRUPI NGA mosha me numër> 3

Si funksionon: 1. MySql së pari zgjedh të gjithë përdoruesit që kanë emrin Mike2. Të gjithë përdoruesit grupohen sipas moshës. Le të themi se ka 4 përdorues në moshën 34 vjeç. MySQL shfaq vetëm një rekord / përdorues për të njëjtën moshë (krijoni një grup pas 34 vjetësh) .3. Vetëm tani MySql numëron përdoruesit e grupuar dhe mund të kontrollojë se sa përdorues janë në një grup të caktuar.

Siç mund ta shihni, këto operacione duhet të bëhen në atë mënyrë të veçantë.

Tani është e rëndësishme të dini se gjithçka që përdorni në HAVING duhet të jetë i pranishëm në SELECT. Për shembull:

- Ky NUK është VAZHDUAR VJETI SELECT SELECT (*), emri, mosha NGA përdoruesi KU JENI emri = "Mike" GRUPI NGA mosha me adresën <> "" - adresa nuk është zgjedhur - por ky është numri i vlefshëm SELECT (*), Emri, Mosha NGA Përdoruesi KU KU Emri = "Mike" DHE Adresa <> "" GRUPI NGA Mosha me moshën> 30 - ne mund të filtrojmë me çdo gjë që zgjedhim

Për arsye shpejtësie, duhet të përdorni KU KU për të marrë parasysh indekset

Në shembullin tonë, supozoni se mosha është një indeks. SQL-ja e mësipërme është shumë më e ngadaltë se tjetra

SELECT SEUNT (*) numri, emri, mosha NGA përdoruesi KU JENI emri = "Mike" DHE adresa <> "" DHE mosha> 30 - ne përdorim GRUPIN INDEX NGA mosha - mos e përdorni HAVING pasi të keni bërë gjithë punën e vështirë

Ju gjithashtu mund të gjeni një përgjigje të mirë këtu KU vs vs HAVING (përgjigjja e dytë shpjegon pjesën e fuqisë)


përgjigje 3:

Shpjegimi themelor është se KU FILROJE së pari dhe KU FILLET filtra më pas. Kjo është arsyeja pse HAVING përdoret për funksione të grumbulluara - regjistrimet e të dhënave grumbullohen sipas kushteve KU JU.

Shembull SQL: Të gjithë përdoruesit e quajtur Mike nëse më shumë se 3 janë në të njëjtën moshë

SELECT SEUNT (*) numri, mosha, emri NGA përdoruesi KU KU emër = "Mike" GRUPI NGA mosha me numër> 3

Si funksionon: 1. MySql së pari zgjedh të gjithë përdoruesit që kanë emrin Mike2. Të gjithë përdoruesit grupohen sipas moshës. Le të themi se ka 4 përdorues në moshën 34 vjeç. MySQL shfaq vetëm një rekord / përdorues për të njëjtën moshë (krijoni një grup pas 34 vjetësh) .3. Vetëm tani MySql numëron përdoruesit e grupuar dhe mund të kontrollojë se sa përdorues janë në një grup të caktuar.

Siç mund ta shihni, këto operacione duhet të bëhen në atë mënyrë të veçantë.

Tani është e rëndësishme të dini se gjithçka që përdorni në HAVING duhet të jetë i pranishëm në SELECT. Për shembull:

- Ky NUK është VAZHDUAR VJETI SELECT SELECT (*), emri, mosha NGA përdoruesi KU JENI emri = "Mike" GRUPI NGA mosha me adresën <> "" - adresa nuk është zgjedhur - por ky është numri i vlefshëm SELECT (*), Emri, Mosha NGA Përdoruesi KU KU Emri = "Mike" DHE Adresa <> "" GRUPI NGA Mosha me moshën> 30 - ne mund të filtrojmë me çdo gjë që zgjedhim

Për arsye shpejtësie, duhet të përdorni KU KU për të marrë parasysh indekset

Në shembullin tonë, supozoni se mosha është një indeks. SQL-ja e mësipërme është shumë më e ngadaltë se tjetra

SELECT SEUNT (*) numri, emri, mosha NGA përdoruesi KU JENI emri = "Mike" DHE adresa <> "" DHE mosha> 30 - ne përdorim GRUPIN INDEX NGA mosha - mos e përdorni HAVING pasi të keni bërë gjithë punën e vështirë

Ju gjithashtu mund të gjeni një përgjigje të mirë këtu KU vs vs HAVING (përgjigjja e dytë shpjegon pjesën e fuqisë)


përgjigje 4:

Shpjegimi themelor është se KU FILROJE së pari dhe KU FILLET filtra më pas. Kjo është arsyeja pse HAVING përdoret për funksione të grumbulluara - regjistrimet e të dhënave grumbullohen sipas kushteve KU JU.

Shembull SQL: Të gjithë përdoruesit e quajtur Mike nëse më shumë se 3 janë në të njëjtën moshë

SELECT SEUNT (*) numri, mosha, emri NGA përdoruesi KU KU emër = "Mike" GRUPI NGA mosha me numër> 3

Si funksionon: 1. MySql së pari zgjedh të gjithë përdoruesit që kanë emrin Mike2. Të gjithë përdoruesit grupohen sipas moshës. Le të themi se ka 4 përdorues në moshën 34 vjeç. MySQL shfaq vetëm një rekord / përdorues për të njëjtën moshë (krijoni një grup pas 34 vjetësh) .3. Vetëm tani MySql numëron përdoruesit e grupuar dhe mund të kontrollojë se sa përdorues janë në një grup të caktuar.

Siç mund ta shihni, këto operacione duhet të bëhen në atë mënyrë të veçantë.

Tani është e rëndësishme të dini se gjithçka që përdorni në HAVING duhet të jetë i pranishëm në SELECT. Për shembull:

- Ky NUK është VAZHDUAR VJETI SELECT SELECT (*), emri, mosha NGA përdoruesi KU JENI emri = "Mike" GRUPI NGA mosha me adresën <> "" - adresa nuk është zgjedhur - por ky është numri i vlefshëm SELECT (*), Emri, Mosha NGA Përdoruesi KU KU Emri = "Mike" DHE Adresa <> "" GRUPI NGA Mosha me moshën> 30 - ne mund të filtrojmë me çdo gjë që zgjedhim

Për arsye shpejtësie, duhet të përdorni KU KU për të marrë parasysh indekset

Në shembullin tonë, supozoni se mosha është një indeks. SQL-ja e mësipërme është shumë më e ngadaltë se tjetra

SELECT SEUNT (*) numri, emri, mosha NGA përdoruesi KU JENI emri = "Mike" DHE adresa <> "" DHE mosha> 30 - ne përdorim GRUPIN INDEX NGA mosha - mos e përdorni HAVING pasi të keni bërë gjithë punën e vështirë

Ju gjithashtu mund të gjeni një përgjigje të mirë këtu KU vs vs HAVING (përgjigjja e dytë shpjegon pjesën e fuqisë)