PostgreSQL WHERE EXISTS Query

PostgreSQL: Utilizzo della clausola where EXISTS

Quando una query SQL viene utilizzata all’interno di un’altra query SQL, viene chiamata sottoquery. La query complicata può essere scritta facilmente dividendo una query di grandi dimensioni in più sottoquery. La clausola EXISTS viene utilizzata con una sottoquery in un’istruzione SQL. L’output di EXISTS dipende dal numero di record restituiti dalla subquery ma non dipende dai valori dei record. Il risultato di EXISTS sarà true se la sottoquery associata restituisce almeno una riga. Come è possibile utilizzare ESISTE e NON ESISTE clausola in select, insert, update e delete istruzioni sono mostrati in questo tutorial utilizzando diversi esempi.

ESISTE la sintassi della clausola:

SELEZIONARE col1, col2, col3…..
DA table_name1
DOVE ESISTE (SELEZIONARE 1
DA
table_name2
DOVE col1 = table_name1.col1);

Creare tre tabelle denominate azienda, articoli e clienti e inserire alcuni dati. Eseguire la seguente query select per mostrare il contenuto di queste tabelle.

SELEZIONA * dalla società;
SELEZIONA * dagli articoli;
SELEZIONA * dai clienti;

Esempio-1: Utilizzo della clausola EXISTS in SELECT query

(a) EXISTS

La seguente query recupererà i record dalla tabella items in base alla tabella company. La subquery cerca tutti i record dalla tabella società in cui company_id della tabella società è uguale a company_id della tabella elementi e il valore del campo telefono non è vuoto. C’è un record nella tabella aziendale che non ha numero di telefono e questo record verrà omesso dall’output.

SELEZIONA item_id, name, quantity
DA items
DOVE ESISTE (SELEZIONA 1
DA company
DOVE items.company_id = azienda.company_id e società.telefono<>”);

Uscita:

Il record di LG non ha voce di telefono nella tabella aziendale. Quindi non è apparso nell’output.

(b) NOT EXISTS

La clausola NOT EXISTS è opposta alla clausola EXISTS. La seguente query recupererà tali record dalla tabella elementi quando la sottoquery restituisce false.

SELEZIONA item_id, name, quantity
DA items
DOVE NON ESISTE (SELEZIONA 1
DA company
DOVE items.company_id = azienda.company_id e società.website_url è NULL);

Output:

Non vi è alcun record nella tabella aziendale in cui website_url è NULL. Quindi l’output della subquery è false per tutti i record e tutti i record della tabella items vengono recuperati.

Esempio-2: Utilizzando la clausola EXISTS in INSERT query

In base alla seguente query insert, i dati verranno inseriti nella tabella items quando company_id di entrambe le tabelle company e customers sono uguali.

INSERT INTO items
(company_id)
SELECT company_id
FROM customers
WHERE EXISTS (sELECT 1
FROM company,customers
WHERE customers.company_id = azienda.id_azienda);

Output:

Ci sono tre voci per company_id nella tabella clienti con i valori sono 1 e 2. Quindi la subquery restituirà true per tre volte e verranno inseriti tre record.

Eseguire la query select per controllare il contenuto della tabella items.

Esempio-3: Utilizzo della clausola EXISTS nella query di aggiornamento

La seguente query aggiornerà i record della tabella items in cui company_id è 1 e la sottoquery restituisce true.

AGGIORNA elementi
IMPOSTA nome=’Nokia’
DOVE company_id = 1 ed ESISTE (SELEZIONA 1
DA elementi
DOVE nome = ‘Non assegnare’);

Uscita:

Qui, la sottoquery restituirà true per tre volte e company_id è 1 per tre record. Tre record verranno aggiornati dopo l’esecuzione della query di aggiornamento.

Eseguire la query select per controllare il contenuto della tabella items.

Esempio-4: Utilizzo della clausola EXISTS in DELETE query

La seguente query eliminerà i record della tabella items in cui company_id è 1 e la sottoquery restituisce true.

ELIMINA DA elementi
DOVE company_id=1 ed ESISTE (SELEZIONARE 1
DA elementi
DOVE name = ‘Non assegnare’);

Output:

Ci sono tre record con valore 1 di company_id e un record ha il valore name ‘Not Assign’. Quindi, la condizione sarà vera per tre volte ed eliminerà tre record dalla tabella elementi.

Eseguire la query select per controllare il contenuto della tabella items.

Spero, hai una chiara idea di usare la clausola EXISTS in SQL query dopo aver letto questo tutorial.

Lascia un commento

Il tuo indirizzo email non sarà pubblicato.