BETWEEN ... AND ... 子句提供了一種簡潔的語法來表達「在某範圍內」的條件,等同於 >= 與 <= 的組合,適用於數值、日期、字符串等類型。
沿用 employee_tbl 表,需求:查詢每日打字頁數在 170 到 300 之間(含邊界)的記錄。
mysql> SELECT * FROM employee_tbl -> WHERE daily_typing_pages >= 170 -> AND daily_typing_pages <= 300;
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'