首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> MySQL 資料庫 >> MySQL 綜合教學

MySQL BETWEEN 子句用法詳解:範圍查詢更優雅

     編輯:MySQL 綜合教學

MySQL BETWEEN 子句用法詳解:範圍查詢更優雅

BETWEEN ... AND ... 子句提供了一種簡潔的語法來表達「在某範圍內」的條件,等同於 >= 與 <= 的組合,適用於數值、日期、字符串等類型。

範例場景

沿用 employee_tbl 表,需求:查詢每日打字頁數在 170 到 300 之間(含邊界)的記錄。

傳統寫法

mysql> SELECT * FROM employee_tbl
-> WHERE daily_typing_pages >= 170 
-> AND daily_typing_pages <= 300;

BETWEEN 寫法

mysql> SELECT * FROM employee_tbl
-> WHERE daily_typing_pages BETWEEN 170 AND 300;

兩者執行結果完全一致:

+------+------+------------+--------------------+
| id   | name | work_date  | daily_typing_pages |
+------+------+------------+--------------------+
| 1    | John | 2007-01-24 | 250                |
| 2    | Ram  | 2007-05-27 | 220                |
| 3    | Jack | 2007-05-06 | 170                |
| 4    | Jill | 2007-04-06 | 220                |
| 5    | Zara | 2007-06-06 | 300                |
+------+------+------------+--------------------+

關鍵特性

  • 包含邊界:BETWEEN 170 AND 300 等價於 >=170 AND <=300。
  • 類型通用:支援數值、日期(BETWEEN '2023-01-01' AND '2023-12-31')、字符串(按字典序)。
  • 可否定:NOT BETWEEN 表示不在該範圍內。
  • 效能:優化器內部轉換為範圍查詢,若欄位有索引可走 range 掃描。

常見陷阱

若欄位為 DATETIME 且帶時間部分,BETWEEN '2023-01-01' AND '2023-01-31' 會漏掉 1 月 31 日非 00:00:00 的記錄。建議改用:

WHERE dt >= '2023-01-01' AND dt < '2023-02-01'
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved