Sobes.tech
Intern

Qual è la differenza tra una sottoquery in WHERE id IN (SELECT ...) e una sottoquery con WHERE EXISTS (SELECT ...)? IN confronta i valori con un insieme di risultati, EXISTS verifica la presenza di almeno una riga IN viene eseguito per ogni riga della query esterna, EXISTS una sola volta Non c'è differenza IN funziona solo con numeri, EXISTS con qualsiasi tipo

sobes.tech AI

Risposta dell'AI

Risposta corretta: IN confronta i valori con un insieme di risultati, EXISTS verifica la presenza di almeno una riga.

La sottoquery con IN restituisce righe in cui il valore corrisponde a uno qualsiasi dei valori restituiti dalla sottoquery. La sottoquery con EXISTS verifica se esiste almeno una riga che soddisfa la condizione.

Differenze:

  • IN confronta valori specifici, EXISTS verifica la presenza di righe.
  • EXISTS è spesso più efficiente per verificare l'esistenza, specialmente in condizioni complesse.

Esempio:

SELECT * FROM orders o
WHERE o.customer_id IN (SELECT c.id FROM customers c WHERE c.status = 'active');

SELECT * FROM orders o
WHERE EXISTS (SELECT 1 FROM customers c WHERE c.id = o.customer_id AND c.status = 'active');

Entrambe le query selezionano ordini di clienti attivi, ma funzionano in modo diverso.