English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
In questo tutorial, imparerai come utilizzare gli operatori AND & OR nelle clause WHERE per filtrare i record in base a più condizioni.
Nell'ultimo capitolo, abbiamo imparato come ottenere record dalla tabella utilizzando una condizione singola con la clause WHERE. Ma a volte hai bisogno di filtrare i record in base a più condizioni, come selezionare gli utenti con età superiore ai 30 anni e regione USA, o i prodotti con prezzo inferiore a 100 dollari e valutazione superiore a 4, ecc.
L'operatore AND è un operatore logico che combina due condizioni e restituisce TRUE solo se entrambe le condizioni hanno il risultato TRUE. Di solito inSELECT,UPDATE,DELETEdelWHEREUtilizzo dell'operatore AND nelle clause per formare condizioni che filtrino i risultati.
SELECT column1_name, column2_name, columnN_nameFROM table_nameWHERE condition1 AND condition2;
Ecco alcuni esempi per dimostrare come funziona nella pratica.
Supponiamo di avere un database con un nomeemployeescontenente i seguenti record:
+--------+--------------+------------+--------+---------+ | emp_id | emp_name | hire_date | salary | dept_id | +--------+--------------+------------+--------+---------+ | 1 | Ethan Hunt | 2001-05-01 | 5000 | 4 | | 2 | Tony Montana | 2002-07-15 | 6500 | 1 | | 3 | Sarah Connor | 2005-10-18 | 8000 | 5 | | 4 | Rick Deckard | 2007-01-03 | 7200 | 3 | | 5 | Martin Blank | 2008-06-24 | 5600 | NULL | +--------+--------------+------------+--------+---------+
La seguente query SQL recupererà soloemployeesLa tabella restituirà i salari (salary) superiori a 7000 edept_idGli impiegati con un numero di dipartimento uguale a 5.
SELECT * FROM employees WHERE salary > 7000 AND dept_id = 5;
Dopo l'esecuzione, otterrai il seguente output:
+--------+--------------+------------+--------+---------+ | emp_id | emp_name | hire_date | salary | dept_id | +--------+--------------+------------+--------+---------+ | 3 | Sarah Connor | 2005-10-18 | 8000 | 5 | +--------+--------------+------------+--------+---------+
Anche l'operatore OR è un operatore logico che combina due condizioni, ma restituisce TRUE se almeno una delle due condizioni è TRUE.
La seguente query SQL recupereràemployeesLa tabella restituirà i salari (salary) superiori a 7000 odept_idTutti gli impiegati con un numero di dipartimento uguale a 5.
SELECT * FROM employees WHERE salary > 7000 OR dept_id = 5;
Questa volta otterrai il seguente output:
+--------+--------------+------------+--------+---------+ | emp_id | emp_name | hire_date | salary | dept_id | +--------+--------------+------------+--------+---------+ | 3 | Sarah Connor | 2005-10-18 | 8000 | 5 | | 4 | Rick Deckard | 2007-01-03 | 7200 | 3 | +--------+--------------+------------+--------+---------+
Puoi combinare AND e OR per creare espressioni condizionali complesse.
La seguente query SQL restituirà i salari superiori a 5000 e anchedept_idTutti gli impiegati con un numero di dipartimento uguale a 1 o 5.
SELECT * FROM employees WHERE salary > 5000 AND (dept_id = 1 OR dept_id = 5);
查询上面的执行完毕后,您将获得如下输出:
+--------+--------------+------------+--------+---------+ | emp_id | emp_name | hire_date | salary | dept_id | +--------+--------------+------------+--------+---------+ | 2 | Tony Montana | 2002-07-15 | 6500 | 1 | | 3 | Sarah Connor | 2005-10-18 | 8000 | 5 | +--------+--------------+------------+--------+---------+