Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> MySQL

MySQL BETWEEN loại trừ chỉ giá trị cuối (exclusive upper bound)

Để BETWEEN bao gồm đầu nhưng loại trừ cuối: BETWEEN a AND b AND cot <> b hoặc cot >= a AND cot < b.

Cú pháp

SELECT * 
FROM ten_bang 
WHERE cot BETWEEN gia_tri_dau AND gia_tri_cuoi
  AND cot <> gia_tri_cuoi;

Hoặc đơn giản hơn (khuyến nghị):

SELECT * 
FROM ten_bang 
WHERE cot >= gia_tri_dau AND cot < gia_tri_cuoi;

Ví dụ minh họa

Cùng bảng Id 1..9. Lấy Id từ 3 đến 8, **bao gồm 3, loại trừ 8**:

Cách 1: BETWEEN + NOT IN

SELECT * FROM BetweenWithoutEndPoints 
WHERE Id BETWEEN 3 AND 8 AND Id NOT IN (8);
+----+-------+------+
| Id | Name  | Age  |
+----+-------+------+
|  3 | David |   28 |
|  4 | Sam   |   26 |
|  5 | Carol |   21 |
|  6 | John  |   29 |
|  7 | James |   20 |
+----+-------+------+

Cách 2: Toán tử so sánh (khuyên dùng)

SELECT * FROM BetweenWithoutEndPoints 
WHERE Id >= 3 AND Id < 8;

Kết quả giống hệt, hiệu năng tốt hơn (dùng được index range scan).

Tóm tắt:

  • Inclusive cả hai: BETWEEN a AND b ≡ cot >= a AND cot <= b
  • Exclusive cả hai: cot > a AND cot < b
  • Inclusive đầu, exclusive cuối: cot >= a AND cot < b