Posto che la sottoquery di exists deve avere un riferimento alla query principale se no non ha senso.
SQL prende una riga della query principale e verifica se la query exists sia TRUE (esiste, e' valida) , o not exists (non e' valida)
select * from autisti
where exists (select 1 from viaggi
where viaggi.autista = autisti.autista
and viaggi.data_viaggio = trunc(sysdate)
)
/
Ritornano le righe di autisti che hanno una referenza di viaggio oggi
Si potrebbe scrivere anche cosi'
select * from autisti
where autisti.autista in (select viaggi.autista from viaggi
where viaggi.data_viaggio = trunc(sysdate)
)
/
la preferenza di scrittura dipende dall'utilizzo degli indici