首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫

MySQL 比較運算子進階應用:BETWEEN、GREATEST、LEAST 實戰範例

     編輯:MySQL 資料庫相關知識

BETWEEN:範圍判斷利器

測試數值或日期是否落於指定區間(含邊界),回傳 1 (真) 或 0 (假)。

數值範圍

SELECT 2350 BETWEEN 100 AND 10000;  -- 回傳 1

日期範圍

SELECT '2006-04-05' BETWEEN '2006-01-01' AND '2007-01-01';  -- 1
SELECT '2006-04-05' BETWEEN '2006-01-01' AND '2006-04-01';  -- 0

實務應用:薪資區間查詢

SELECT * FROM employees 
WHERE salary BETWEEN 50000 AND 80000;

GREATEST / LEAST:多值極值比較

回傳參數列表中的最大值 (GREATEST) 或最小值 (LEAST),支援數值、字串、日期。

日期最大值

SELECT GREATEST('2000-06-01', '2000-05-29', '2000-06-04');  -- 2000-06-04

數值最小值

SELECT LEAST(100, 200, 50, -6, -73, 1000);  -- -73

字串比較 (依字典序)

SELECT GREATEST('apple', 'banana', 'cherry');  -- 'cherry'
SELECT LEAST('apple', 'banana', 'cherry');     -- 'apple'

實務應用場景

動態計算有效期限

-- 取三個日期中最晚者作為生效日
SELECT GREATEST(contract_start, approval_date, payment_date) AS effective_date
FROM contracts;

多倉庫庫存最低值預警

SELECT product_id,
       LEAST(warehouse_a_qty, warehouse_b_qty, warehouse_c_qty) AS min_stock
FROM inventory
WHERE LEAST(warehouse_a_qty, warehouse_b_qty, warehouse_c_qty) < 10;

評分系統取最高/最低分

SELECT student_id,
       GREATEST(score_1, score_2, score_3) AS highest,
       LEAST(score_1, score_2, score_3) AS lowest
FROM exam_scores;

注意事項

  • 參數類型需一致或可隱含轉換,混合類型可能產生非預期結果
  • NULL 參數會導致結果為 NULL,建議用 COALESCE() 預處理
  • 大量資料查詢時,這些函數無法使用索引,考慮改寫為 CASE WHEN 或應用層計算
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved