Sử dụng toán tử AND trong mệnh đề WHERE MySQL
Toán tử AND kết hợp nhiều điều kiện, chỉ trả về hàng khi tất cả điều kiện đều đúng.
Cú pháp
SELECT * FROM yourTableName WHERE yourColumnName1 = yourValue1 AND yourColumnName2 = yourValue2;
Ví dụ: Tìm người tên Mike và 21 tuổi
Tạo bảng:
mysql> CREATE TABLE MySQLANDConditionDemo (
-> Id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
-> Name VARCHAR(100),
-> Age INT
-> );
Chèn dữ liệu:
mysql> INSERT INTO MySQLANDConditionDemo(Name, Age) VALUES
('Larry', 23), ('Mike', 21), ('Sam', 24), ('David', 26), ('Carol', 27), ('Bob', 28);
Dữ liệu:
+----+-------+------+ | Id | Name | Age | +----+-------+------+ | 1 | Larry | 23 | | 2 | Mike | 21 | | 3 | Sam | 24 | | 4 | David | 26 | | 5 | Carol | 27 | | 6 | Bob | 28 | +----+-------+------+
Truy vấn với AND:
mysql> SELECT * FROM MySQLANDConditionDemo WHERE Name = 'Mike' AND Age = 21;
Kết quả:
+----+------+------+ | Id | Name | Age | +----+------+------+ | 2 | Mike | 21 | +----+------+------+
Các biến thể AND
- Nhiều điều kiện:
WHERE a=1 AND b=2 AND c=3 - Kết hợp với OR:
WHERE (a=1 OR a=2) AND b=3(dùng ngoặc) - Với BETWEEN:
WHERE age >= 18 AND age <= 65→WHERE age BETWEEN 18 AND 65 - Với IN:
WHERE status = 'active' AND type IN ('A','B')
Thứ tự ưu tiên
AND có độ ưu tiên cao hơn OR. Luôn dùng ngoặc () để rõ ràng khi kết hợp cả hai.
Tối ưu hóa
- Đặt điều kiện lọc bớt hàng nhất (selective) trước
- Tạo composite index cho các cột thường dùng cùng nhau trong AND
- Tránh hàm trên cột trong WHERE (vd:
WHERE YEAR(date) = 2024không dùng index)