WHERE 查詢子句 (SQL WHERE Clause)

我們可以進一步在 SELECT 查詢語句使用 WHERE 關鍵字搭配運算子來取出 "符合條件" 的紀錄值。

WHERE 語法 (SQL WHERE Syntax)

SELECT table_column1, table_column2...
FROM table_name
WHERE column_name operator value;

WHERE 子句用法 (Example)

假設我們想從下面的 customers 資料表中查詢 "王二" 的資料:

C_IdNameCityAddressPhone
1張一台北市XX路100號02-12345678
2王二新竹縣YY路200號03-12345678
3李三高雄縣ZZ路300號07-12345678
4陳四台北市AA路400號02-87654321

我們可以下 "取出表中姓名欄位值是王二" 如此條件的 SELECT 敘述句:

SELECT * FROM customers WHERE Name = '王二';

查詢的結果如下:

C_IdNameCityAddressPhone
2王二新竹縣YY路200號03-12345678

查詢條件中的 "字串值" 需要用單引號 '' 包住,否則會出現錯誤;另一方面,對於數值型別則不可以加上引號,否則也會出現錯誤。被單引號圍住的字元即表示其資料型別為字串,但有些資料庫也接受用雙引號。

多個查詢條件式

你可以使用 ANDOR 運算子同時下達多個條件:

  • AND 運算子表示其左右兩條件皆需符合
  • OR 運算子表示其左右兩條件至少需符合一個
SELECT table_column1, table_column2...
FROM table_name
WHERE column_name1 operator value1
AND column_name2 operator value2
[AND|OR]...;

舉個例子,我們想在下面這個 customers 資料表中查詢住在台北市而且薪水大於 5 萬的顧客姓名及連絡電話:

C_IdNameCityAddressPhoneSalary
1張一台北市XX路100號02-1234567825000
2王二新竹縣YY路200號03-1234567830000
3李三高雄縣ZZ路300號07-1234567830000
4陳四台北市AA路400號02-8765432150000

可以這樣查詢:

SELECT Name, Phone FROM customers
WHERE City = '台北市' AND Salary >= 50000;

查詢的結果如下:

NamePhone
陳四02-87654321

利用圓括號 () 可以來執行更複雜的查詢條件,圓括號內圍住的的條件式會優先判斷。例如:

WHERE 條件一 AND (條件二 OR 條件三)

此 SQL 陳述式會優先對條件二與條件三做 OR 邏輯運算,所得結果再接著和條件一做 AND 邏輯運算。