在本教程中,您將學(xué)習(xí)如何在子句中使用AND&OR運(yùn)算符,WHERE以根據(jù)多個(gè)條件過濾記錄。
在上一章中,我們學(xué)習(xí)了如何使用帶有該WHERE子句的單個(gè)條件從表中獲取記錄。但是有時(shí)您需要根據(jù)多種條件來過濾記錄,例如選擇年齡大于30歲且國家/地區(qū)為美國的用戶,選擇價(jià)格低于100美元且評分大于4的產(chǎn)品,等等。
AND運(yùn)算符是一個(gè)邏輯運(yùn)算符,它將兩個(gè)條件組合在一起,并且僅當(dāng)兩個(gè)條件的結(jié)果都為TRUE時(shí)才返回TRUE。 通常在SELECT,UPDATE,DELETE語句的WHERE子句中使用AND運(yùn)算符來形成條件以過濾結(jié)果集。
SELECT column1_name, column2_name, columnN_nameFROM table_nameWHERE condition1 AND condition2;
讓我們看一些示例,演示其實(shí)際工作方式。
假設(shè)我們在數(shù)據(jù)庫中有一個(gè)名為employees的表,其中包含以下記錄:
+--------+--------------+------------+--------+---------+ | 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 | +--------+--------------+------------+--------+---------+
以下SQL語句將僅從employees表中返回薪水(salary)大于7000且dept_id等于5的那些雇員。
SELECT * FROM employees WHERE salary > 7000 AND dept_id = 5;
執(zhí)行后,您將獲得如下輸出:
+--------+--------------+------------+--------+---------+ | emp_id | emp_name | hire_date | salary | dept_id | +--------+--------------+------------+--------+---------+ | 3 | Sarah Connor | 2005-10-18 | 8000 | 5 | +--------+--------------+------------+--------+---------+
同樣,OR運(yùn)算符也是將兩個(gè)條件組合在一起的邏輯運(yùn)算符,但是TRUE當(dāng)兩個(gè)條件中的任何一個(gè)為時(shí),它將返回TRUE。
以下SQL語句將從employees表中返回薪水(salary)大于7000或dept_id等于5的所有雇員。
SELECT * FROM employees WHERE salary > 7000 OR dept_id = 5;
這次您將獲得如下輸出:
+--------+--------------+------------+--------+---------+ | 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 | +--------+--------------+------------+--------+---------+
您還可以組合 AND 和 OR 創(chuàng)建復(fù)雜的條件表達(dá)式。
以下SQL語句將返回薪水大于5000,并且dept_id等于1或5的所有雇員。
SELECT * FROM employees WHERE salary > 5000 AND (dept_id = 1 OR dept_id = 5);
執(zhí)行完上面的查詢后,您將獲得如下輸出:
+--------+--------------+------------+--------+---------+ | 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 | +--------+--------------+------------+--------+---------+