L'operatore Exists in SQL

In una select nidificata la clausola EXISTS verifica se un valore esiste nella select interna.

E' una condizione di esistenza.

L'operatore EXISTS restituisce un valore booleano:

  • vero (esiste)
  • falso (non esiste).

Nota. La condizione di non esistenza si realizza con NOT EXISTS. La spiegazione e il funzionamento sono identici ma i risultati sono invertiti. In questo caso è vero se non esiste, è falso se esiste.

    Un esempio pratico

    Ho la tabella Persone composta da quattro colonne (Nome, Cognome, Età, Residenza).

    la tabella di esempio

    Voglio verificare se esistono nella tabella delle persone con lo stesso cognome ma nome diverso.

    Scrivo una query nidificata usando la clausola EXISTS.

    SELECT * FROM `persone` T1
    WHERE EXISTS ( SELECT * FROM Persone T2
    WHERE T2.cognome = T1.cognome AND T1.Nome <> T2.Nome )

    Il DBMS legge i valori di una riga nella select esterna.

    Poi nella tabella più interna verifica se esiste un'altra persona con lo stesso cognome ma nome diverso.

    Il risultato della query è il seguente

    il risultato della query

    Nella tabella Persone due tuple rispettano questa condizione.

    E così via.

     


     

    Segnalami un errore, un refuso o un suggerimento per migliorare gli appunti

    FacebookTwitterLinkedinLinkedin
    knowledge base

    SQL