SQL WHERE IN – Spiegato con esempi

SQL WHERE IN – Spiegato con esempi

Sei stanco di filtrare manualmente i dati nel tuo database e cerchi un modo più efficiente per filtrare i dati con più valori? SQL WHERE IN potrebbe essere la soluzione di cui hai bisogno!

Se stai lavorando con database SQL, probabilmente ti sei imbattuto nell'operatore WHERE IN. Questo operatore viene utilizzato per specificare più valori in una clausola WHERE, consentendo di filtrare i dati in modo più preciso.

Con questo operatore, puoi specificare un elenco di valori da confrontare con una colonna nella tua tabella. Questo elenco può essere codificato o generato da una sottoquery, offrendoti molta flessibilità nel modo in cui filtri i dati.

SQL WHERE IN – Spiegato con esempi

Ad esempio, puoi utilizzare l'operatore IN per trovare tutti i clienti da un elenco specifico di città o per filtrare i risultati in base a un insieme di ID prodotto.

Uno dei vantaggi dell'utilizzo dell'operatore WHERE IN è che può rendere le query più efficienti. Utilizzando un elenco di valori anziché più condizioni OR, è possibile ridurre la quantità di elaborazione che deve essere eseguita dal database.

Ciò può essere particolarmente importante quando si lavora con set di dati di grandi dimensioni o query complesse, in cui anche piccole ottimizzazioni possono fare una grande differenza nelle prestazioni.

Sommario

Che cos'è la clausola SQL WHERE IN?

La clausola SQL WHERE IN viene utilizzata per filtrare i dati in base a un elenco di valori. Consente di specificare più valori in una clausola WHERE utilizzando una scorciatoia per più condizioni OR. La sintassi per la clausola WHERE IN per SQL Server , PostgreSQL, MYSQL e Oracle è la seguente:

SELECT column_name(s) 
FROM table_name 
WHERE column_name IN (value1, value2, ...); 

Se consideriamo l'istruzione SELECT di cui sopra, la clausola WHERE IN consente di recuperare i dati da una tabella in cui la colonna specificata corrisponde a uno qualsiasi dei valori nell'elenco. È una sintassi utile per filtrare i dati quando si dispone di un insieme specifico di valori da cercare.

Come funziona la clausola WHERE IN di SQL?

La clausola funziona confrontando la colonna specificata con ogni valore nell'elenco. Se la colonna corrisponde a uno dei valori nell'elenco, la riga viene inclusa nel set di risultati.

Supponiamo che tu abbia una tabella denominata "customers" composta da tre colonne: "customer_id", "customer_name" e "country". Vuoi recuperare tutti i clienti da Stati Uniti, Canada e Messico. La seguente query ti mostrerà come viene utilizzata la clausola WHERE IN: SELECT id_cliente, nome_cliente, paese FROM clienti WHERE paese IN ('USA','Canada','Messico');

Esempi di clausola WHERE IN SQL

Se desideri filtrare i risultati in base a un elenco di valori possibili, puoi utilizzare la clausola SQL WHERE IN. Questa clausola fornisce un modo semplice per selezionare le righe in cui una determinata colonna corrisponde a uno di un insieme di valori.

Ecco cinque esempi di come la clausola può essere utilizzata:

  1. Utilizzo della clausola WHERE IN SQL con un valore singolo

Supponiamo che tu voglia selezionare tutte le righe in una tabella in cui la colonna dello stato è impostata su "pubblicato". Puoi farlo usando la seguente istruzione SQL:

SELECT * 
FROM my_table 
WHERE status IN ('published');

Ciò restituirà tutte le righe in cui la colonna dello stato è impostata su "pubblicato".

  1. Utilizzo della clausola SQL WHERE IN con valori multipli

Supponiamo ora di voler selezionare tutte le righe in cui la colonna dello stato è impostata su "pubblicato" o "bozza". È possibile utilizzare la seguente istruzione SQL:

SELECT * 
FROM my_table 
WHERE status IN ('published', 'draft');

Ciò restituirà tutte le righe in cui la colonna dello stato è impostata su "pubblicato" o "bozza". Inoltre, puoi aggiungere tutti i valori che vuoi, separati da virgole.

  1. Utilizzo della clausola SQL WHERE IN con l'istruzione Delete

Supponiamo di avere una tabella chiamata "clienti" con i seguenti dati:

SQL WHERE IN – Spiegato con esempi

Per eliminare righe da questa tabella in base a più valori nella colonna "City", è possibile utilizzare la clausola SQL WHERE IN con un'istruzione DELETE, come mostrato nella query seguente:

DELETE FROM customers
WHERE City IN ('New York', 'Chicago', 'Miami');

Questa istruzione eliminerà tutte le righe dalla tabella "clienti" in cui i nomi della colonna "Città" corrispondono a qualsiasi valore nell'elenco, ad esempio "New York", "Chicago", "Miami". Nell'esempio precedente, eliminerà la prima, la terza e la quinta riga dalla tabella.

Si noti che quando si utilizza la clausola WHERE IN con un'istruzione DELETE, è necessario prestare molta attenzione a evitare errori assicurandosi di eliminare i dati corretti. È meglio testare la query su un piccolo sottoinsieme di dati prima di eseguirla sull'intero database.

  1. Utilizzo dell'operatore WHERE IN e della clausola SQL WHERE per filtrare i dati in base a valori numerici

SELECT *
FROM customers
WHERE age IN (25, 30, 35)
AND city = 'London';

Questa query restituirà tutte le righe della tabella "clienti" in cui la colonna dell'età contiene i valori numerici 25, 30 o 35 e la colonna della città contiene il valore "Londra".

Si noti che l'operatore WHERE IN è un operatore logico che consente solo di specificare più valori per una singola colonna. L'istruzione SELECT viene utilizzata per recuperare i dati da una tabella e la clausola WHERE viene utilizzata per filtrare i dati in base a condizioni specifiche.

In questo esempio, la query restituisce le righe della tabella "clienti" in cui la colonna dell'età corrisponde a uno dei valori numerici specificati e la colonna della città corrisponde al valore "Londra". I nomi di colonna utilizzati in questa query sono "età" e "città" e la tabella interrogata è "clienti".

  1. Utilizzo di WHERE IN con l'istruzione SELECT e l'operatore IN.

SELECT *
FROM orders
WHERE customer_id IN (
    SELECT customer_id
    FROM customers
    WHERE country = 'USA'
);

In questo esempio, utilizziamo una sottoquery per recuperare tutti gli ID cliente dalla tabella "clienti" in cui la colonna del paese contiene il valore "USA". Stiamo quindi utilizzando l'operatore WHERE IN per filtrare la tabella "ordini" in base a tali ID cliente.

Questa query restituirà tutte le righe della tabella ordini in cui la colonna customer_id corrisponde a uno degli ID cliente restituiti dalla sottoquery.

Tenere presente che l'operatore WHERE IN è un operatore di confronto che consente di confrontare una colonna con un elenco di valori. In questo caso, confrontiamo la colonna customer_id con un elenco di ID cliente restituiti dalla sottoquery.

Utilizzando questo operatore e una sottoquery, puoi filtrare i dati in base a criteri specifici e recuperare solo i dati che soddisfano le tue esigenze.

2 Principali vantaggi dell'utilizzo della clausola WHERE IN SQL?

  1. Prestazioni delle query migliorate

La clausola offre uno dei maggiori vantaggi in termini di prestazioni delle query. Quando si filtrano i dati in base a più valori, l'utilizzo della clausola può essere molto più efficiente e veloce rispetto alla scrittura di più clausole WHERE con operatori OR. Questo perché il motore di database può ottimizzare il piano di esecuzione della query per recuperare in modo efficiente i dati necessari.

Ad esempio, considera le seguenti query SQL con la tabella "clienti", in cui stiamo cercando di identificare i dettagli del cliente in base ai loro paesi.

SELECT CustomerID,CustomerName,phone,Email,CustomerCounter
FROM customers WHERE country='USA' 
			OR country='Canada' 
			OR country='Mexico' ;

SQL WHERE IN – Spiegato con esempi

 SELECT CustomerID,CustomerName,phone,Email,CustomerCounter
FROM customers 
WHERE country IN ('USA', 'Canada', 'Mexico'); 

SQL WHERE IN – Spiegato con esempi

Come visto nell'esempio precedente, l'utilizzo della clausola può comportare un miglioramento significativo delle prestazioni delle query e risparmiare più tempo. È più semplice selezionare tutti i paesi contemporaneamente piuttosto che selezionare un paese dopo l'altro utilizzando l'operatore OR in un set di dati molto più grande.

  1. Scrittura di query semplificata

Un altro grande vantaggio dell'utilizzo della clausola SQ L WHERE IN è che può semplificare il processo di scrittura di query complesse. Quando è necessario filtrare i dati in base a più valori, l'utilizzo di più clausole WHERE con operatori OR può diventare rapidamente ingombrante e difficile da gestire.

L'utilizzo della clausola consente di specificare tutti i valori che si desidera filtrare in una singola istruzione, semplificando la lettura e la gestione delle query. Ciò può essere particolarmente utile quando si lavora con set di dati di grandi dimensioni o quando è necessario scrivere query complesse con più condizioni.

Ad esempio, considera la seguente query SQL:

SELECT *
FROM products 
WHERE category='Electronics' AND (brand='Apple' OR brand='Samsung' OR brand='Sony') 
SELECT *
FROM products 
WHERE category='Electronics' AND brand IN ('Apple', 'Samsung', 'Sony') 

In entrambe le query dell'esempio precedente, la query restituisce tutti i prodotti "elettronica" di Apple, Samsung e Sony.

Tuttavia, l'utilizzo della clausola WHERE IN come visto in quest'ultima query può semplificare il processo di utilizzo di query complesse e renderle più facili da leggere e comprendere.

Inoltre, aiuta anche a evitare errori e rende meno dispendioso in termini di tempo.

La nostra ultima parola

Congratulazioni! Ora sei a conoscenza di come utilizzare la clausola SQL WHERE IN per filtrare i dati in base a un elenco di valori. Valutiamo quello che abbiamo imparato:

Utilizzando WHERE IN, puoi semplificare una serie di query SQL e crearle per recuperare un output scritto in modo più efficiente.

Ricorda, WHERE IN è una scorciatoia per più condizioni OR, quindi può sostituire lunghi elenchi di istruzioni OR. Inoltre, la clausola può essere utilizzata con sottoquery, consentendo di filtrare i dati in base ai risultati di un'altra query.

Quando si utilizza WHERE IN, è importante considerare i tipi di dati dei valori che si stanno confrontando. Se i tipi di dati non corrispondono, potrebbe essere necessario utilizzare le funzioni di conversione del tipo per garantire un confronto accurato.

Nel complesso, la clausola SQL WHERE IN è una sintassi potente ma di base per filtrare i dati nelle query SQL. Padroneggiando questa clausola, puoi migliorare le prestazioni e la leggibilità del tuo codice SQL, semplificandone l'utilizzo e la manutenzione a lungo termine.


Cosè il sé in Python: esempi del mondo reale

Cosè il sé in Python: esempi del mondo reale

Cos'è il sé in Python: esempi del mondo reale

Come salvare e caricare un file RDS in R

Come salvare e caricare un file RDS in R

Imparerai come salvare e caricare oggetti da un file .rds in R. Questo blog tratterà anche come importare oggetti da R a LuckyTemplates.

Rivisitazione dei primi N giorni lavorativi: una soluzione per il linguaggio di codifica DAX

Rivisitazione dei primi N giorni lavorativi: una soluzione per il linguaggio di codifica DAX

In questa esercitazione sul linguaggio di codifica DAX, scopri come usare la funzione GENERATE e come modificare dinamicamente il titolo di una misura.

Mostra approfondimenti utilizzando la tecnica di visualizzazione dinamica multi-thread in LuckyTemplates

Mostra approfondimenti utilizzando la tecnica di visualizzazione dinamica multi-thread in LuckyTemplates

Questo tutorial illustrerà come utilizzare la tecnica di visualizzazione dinamica multi-thread per creare approfondimenti dalle visualizzazioni di dati dinamici nei report.

Introduzione al filtraggio del contesto in LuckyTemplates

Introduzione al filtraggio del contesto in LuckyTemplates

In questo articolo, esaminerò il contesto del filtro. Il contesto del filtro è uno degli argomenti principali che qualsiasi utente di LuckyTemplates dovrebbe inizialmente conoscere.

I migliori suggerimenti per lutilizzo delle app nel servizio online LuckyTemplates

I migliori suggerimenti per lutilizzo delle app nel servizio online LuckyTemplates

Voglio mostrare come il servizio online di LuckyTemplates Apps può aiutare nella gestione di diversi report e approfondimenti generati da varie fonti.

Analizza le variazioni del margine di profitto nel tempo: analisi con LuckyTemplates e DAX

Analizza le variazioni del margine di profitto nel tempo: analisi con LuckyTemplates e DAX

Scopri come elaborare le modifiche al margine di profitto utilizzando tecniche come la ramificazione delle misure e la combinazione di formule DAX in LuckyTemplates.

Idee di materializzazione per cache di dati in DAX Studio

Idee di materializzazione per cache di dati in DAX Studio

Questo tutorial discuterà delle idee di materializzazione delle cache di dati e di come influiscono sulle prestazioni dei DAX nel fornire risultati.

Reporting aziendale tramite LuckyTemplates

Reporting aziendale tramite LuckyTemplates

Se finora utilizzi ancora Excel, questo è il momento migliore per iniziare a utilizzare LuckyTemplates per le tue esigenze di reportistica aziendale.

Che cosè il gateway LuckyTemplates? Tutto quello che devi sapere

Che cosè il gateway LuckyTemplates? Tutto quello che devi sapere

Che cos'è il gateway LuckyTemplates? Tutto quello che devi sapere