CodeGym /課程 /SQL SELF /用比較運算子 (=, >, <, <>) 過濾資料

用比較運算子 (=, >, <, <>) 過濾資料

SQL SELF
等級 2, 課堂 1
開放

好啦,我們已經知道怎麼用 SELECT 指令了。至少,我們已經學會怎麼從資料庫抓資料、選要的欄位,還有寫出一些查詢,把原始資料變成有用的資訊。現在是時候在我們的魔法調色盤裡加點「過濾器」了。沒錯,今天要聊的就是用 資料過濾,靠的就是像 =、>、< 跟 <> 這些比較運算子。

當你在處理很大的表格時,通常你不會想看全部的資料(除非你想體驗一下混亂)。要只挑出你要的那些列,SQL 裡就有個關鍵字 WHERE。它可以讓你設定條件,每一列都要 符合這些條件 才會被查詢選出來。而這些條件,就是靠 比較運算子 來寫的。

用 WHERE 過濾的語法

SELECT 欄位1, 欄位2
FROM 表格
WHERE 條件;

很簡單的結構:在 FROM 指定表格之後,加上 WHERE,然後寫你要的 條件,只有符合的列才會被選出來。

舉個例子,從 students 表格抓資料:

SELECT name, age
FROM students
WHERE age > 18;

這個查詢只會選出那些年齡大於 18 歲的學生(名字跟年齡)。很簡單對吧?現在我們來深入比較運算子的世界。

主要的比較運算子

SQL 裡有幾個比較運算子,可以讓你照自己的需求過濾資料。其實你在數學課應該都看過,只是這裡要再說明一下。這裡是最常用的幾個:

  1. = — 等於。
  2. <> — 不等於(有些 DB 也可以用 !=,但建議用 <>,因為這是 SQL 標準)。
  3. > — 大於。
  4. < — 小於。
  5. >= — 大於等於。
  6. <= — 小於等於。

比較運算子對照表

運算子 意思 範例 結果
= 等於 age = 20 回傳年齡 20 的列
<> 不等於 age <> 20 回傳年齡 不是 20 的列
> 大於 age > 18 回傳年齡 大於 18 的列
< 小於 age < 18 回傳年齡 小於 18 的列
>= 大於等於 age >= 18 回傳年齡 18 或更大 的列
<= 小於等於 age <= 18 回傳年齡 18 或更小 的列

比較運算子的使用範例

範例 1:抓出年齡超過 20 歲的學生

這是我們的表格:

id name age
1 Alex Lin 22
2 Anna Song 19
3 Otto Art 21
SELECT name, age
FROM students
WHERE age > 20;

這裡我們設定條件 age > 20,只會選出年齡超過 20 的學生。如果有個學生 19 歲,很抱歉,他就不會被選出來。

這次查詢會得到這樣的結果:

name age
Alex Lin 22
Otto Art 21

學生 Anna Song 沒被選到,因為她只有 19 歲。

範例 2:抓出薪水至少 50,000 的員工

這是我們的 employees 表格:

first_name last_name salary
Julia Kim 48000
Marcus Lee 52000
Anya Patel 50000
Ethan Zhou 61000

然後這是我們的 SQL 查詢:

SELECT first_name, last_name, salary
FROM employees
WHERE salary >= 50000;

這個查詢會回傳所有薪水 等於 50,000 或 超過 這個數字的員工。等於也算喔!

first_name last_name salary
Marcus Lee 52000
Anya Patel 50000
Ethan Zhou 61000

範例 3:抓出價格小於 100 的商品

product_name price
USB Cable 85
Wireless Mouse 150
Notebook 60
Mechanical Pencil 45
SELECT product_name, price
FROM products
WHERE price < 100;

如果你有個網路商店,用這個查詢就可以選出所有價格小於 100 的商品(比如做個「全部 99 元!」的促銷活動)。

product_name price
USB Cable 85
Notebook 60
Mechanical Pencil 45

範例 4:排除掉 id 為特定值的使用者

SELECT id, username
FROM users
WHERE id <> 1;

這個查詢會選出所有 除了 id 等於 1 的使用者。<> 這個運算子就是「給我所有不等於這個值的」。

users 表格:

id username
1 admin
2 elena.gray
3 tom.bishop
4 aria.noble

查詢結果:

id username
2 elena.gray
3 tom.bishop
4 aria.noble

用比較運算子過濾時常見的錯誤

剛開始寫過濾查詢時,常常會遇到一些錯誤。這裡有幾個常見的狀況,記得注意:

問題 1:欄位名稱拼錯

如果你在查詢裡把欄位名稱寫錯,PostgreSQL 會報錯。例如:

SELECT name, age
FROM students
WHERE ages > 18; -- 錯誤:沒有 "ages" 這個欄位

寫查詢前一定要確認欄位名稱拼對了。

問題 2:比較運算子用錯

有時候新手會不小心把運算子寫錯。例如:

SELECT name, age
FROM students
WHERE age => 18; -- 錯誤:運算子寫錯

正確的語法是 >=,不是 =>。

問題 3:過濾不存在的值

如果你用一個表格裡根本沒有的值去過濾,查詢會執行,但結果是空的。例如:

SELECT name
FROM students
WHERE age = 999; -- 結果:0 列

這不是語法錯誤,但如果你本來預期會有資料,可能會搞混。

實際應用

用比較運算子過濾資料,在很多情境都超實用:

  • 資料分析: 比如選出所有消費超過 10,000 盧比的客戶。
  • 報表: 選出薪水高於平均的員工。
  • 監控: 追蹤最近一個月沒上線的使用者。

SQL 讓你能很快從超大的表格裡抓到你要的資料,而比較運算子就是這條路的第一步啦。

2
任務
SQL SELF, 等級 2, 課堂 1
上鎖
選出年齡大於18歲的學生
選出年齡大於18歲的學生
2
任務
SQL SELF, 等級 2, 課堂 1
上鎖
查找低價商品
查找低價商品
留言
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION