SQL:ssä korreloitu alikysely on alikysely, joka viittaa ulkoisen kyselyn sarakkeeseen. Alikysely suoritetaan toistuvasti jokaiselle ulomman kyselyn riville käyttämällä nykyisen rivin arvoja alikyselyn suorittamiseen. Alikyselyn tulosta käytetään sitten ulkoisen kyselyn arvioinnissa.
Korreloituja alikyselyjä käytetään rivi kerrallaan käsittelyyn. Jokainen alikysely suoritetaan kerran jokaiselle ulkokyselyn riville.
Korreloitu alikysely arvioidaan kerran jokaiselle yläkäskyn käsittelemälle riville. Päälause voi olla a VALITSE , PÄIVITTÄÄ , tai POISTAA lausunto.
Syntaksi:
VALITSE sarake1, sarake2, ….
taulukosta 1 ulko
WHERE sarake1-operaattori
(VALITSE sarake1, sarake2
taulukosta 2
MISSÄ lause1 =
ulompi.lause2);
Korreloitu alikysely on yksi tapa lukea taulukon jokainen rivi ja verrata kunkin rivin arvoja niihin liittyviin tietoihin. Sitä käytetään aina, kun alikyselyn on palautettava eri tulos tai tulosjoukko jokaiselle pääkyselyn tarkastelemalle ehdokasriville. Toisin sanoen voit käyttää korreloitua alikyselyä vastataksesi moniosaiseen kysymykseen, jonka vastaus riippuu kunkin pääkäskyn käsittelemän rivin arvosta.
Sisäkkäiset alikyselyt vs. korreloidut alikyselyt
Normaalilla sisäkkäisellä alikyselyllä sisäinen VALITSE kysely suoritetaan ensin ja suoritetaan kerran, palauttaen arvot, joita pääkysely käyttää. Korreloitu alikysely suoritetaan kuitenkin kerran kullekin ulkoisen kyselyn käsittelemälle ehdokasriville. Toisin sanoen ulkoinen kysely ohjaa sisäistä kyselyä.
HUOMAUTUS: Voit myös käyttää MINKÄ TAHANSA ja KAIKKI operaattoria korreloidussa alikyselyssä. ESIMERKKI vastaavista alikyselyistä: Etsi kaikki työntekijät, jotka ansaitsevat enemmän kuin osastonsa keskimääräinen palkka.
Kysely:
SELECT last_name, salary, department_id FROM employees outer WHERE salary>(VALITSE AVG(palkka) FROM työntekijöiltä WHERE osastotunnus = ulompi.osastotunnus ryhmä osastotunnuksen mukaan);>>Muuta korrelaatiota käytetään PÄIVITTÄÄ ja POISTAA
VASTAAVA PÄIVITYS
Käytä korreloitua alikyselyä päivittääksesi yhden taulukon rivejä toisen taulukon rivien perusteella. VASTUU POISTA
DELETE FROM table1 alias1 WHERE column1 operator (SELECT expression FROM table2 alias2 WHERE alias1.column = alias2.column);>Käytä korreloitua alikyselyä poistaaksesi rivejä yhdestä taulukosta toisen taulukon rivien perusteella.
merkkijono muuntaa int javassaEXISTS-operaattorin käyttäminen
EXISTS-operaattori testaa rivien olemassaolon alikyselyn tulosjoukossa. Jos alikyselyrivin arvo löytyy, ehto merkitään TOTTA ja haku ei jatku sisäisessä kyselyssä, ja jos sitä ei löydy, ehto merkitään VÄÄRÄ ja haku jatkuu sisäisessä kyselyssä.
ESIMERKKI EXIST-operaattorin käytöstä:
Etsi työntekijöitä, joille ainakin yksi henkilö raportoi.
Kysely:
SELECT employee_id, last_name, job_id, department_id FROM employees outer WHERE EXISTS ( SELECT ’X’ FROM employees WHERE manager_id = outer.employee_id);>TULOSTULO:
ESIMERKKI NOT EXIST -operaattorin käytöstä
Etsi kaikki osastot, joilla ei ole työntekijöitä.Kysely:
SELECT department_id, department_name FROM departments d WHERE NOT EXISTS (SELECT ’X’ FROM employees WHERE department_id = d.department_id);>TULOSTULO:
Usein kysytyt kysymykset SQL-vastaavista alikyselyistä – UKK
Mitä eroa on korreloiduilla alikyselyillä ja tavallisilla alikyselyillä?
Tavalliset alikyselyt (korreloimattomat) ovat riippumattomia ulkoisesta kyselystä ja ne arvioidaan vain kerran ennen pääkyselyn suorittamista. Sitä vastoin korreloidut alikyselyt ovat riippuvaisia ulkoisesta kyselystä ja ne suoritetaan pääkyselyn jokaiselle riville.
Milloin minun tulee käyttää korreloituja alikyselyjä?
Korreloidut alikyselyt ovat hyödyllisiä, kun sinun on suodatettava ulkoisen kyselyn tulos sellaisen ehdon perusteella, joka edellyttää arvoihin viittaamista itse ulkoisesta kyselystä. Niitä käytetään yleisesti skenaarioissa, joissa ehto perustuu asiaan liittyvien taulukoiden tietoihin.

