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

Lọc bản ghi có trạng thái ACTIVE trong cột ENUM MySQL

Giới thiệu

Khi cột trạng thái được định nghĩa kiểu ENUM('Active', 'Inactive'), bạn có thể lọc trực tiếp bằng giá trị chuỗi trong mệnh đề WHERE. Kết hợp GROUP BY để lấy các ID duy nhất có trạng thái Active.

Ví dụ minh họa

Bước 1: Tạo bảng với cột ENUM

CREATE TABLE DemoTable2037 (
    StudentId INT,
    status ENUM('Active', 'Inactive')
);

Bước 2: Chèn dữ liệu (có trùng lặp StudentId)

INSERT INTO DemoTable2037 VALUES 
(99, 'Active'), (99, 'Inactive'), (100, 'Inactive'),
(99, 'Active'), (100, 'Inactive'), (101, 'Active'), (101, 'Active');

Bước 3: Lọc StudentId có trạng thái Active (duy nhất)

SELECT StudentId, status
FROM DemoTable2037
WHERE status = 'Active'
GROUP BY StudentId;

Kết quả:

+-----------+--------+
| StudentId | status |
+-----------+--------+
| 99        | Active |
| 101       | Active |
+-----------+--------+

Lưu ý: GROUP BY StudentId ở đây hoạt động vì MySQL (chế độ mặc định không bật ONLY_FULL_GROUP_BY) cho phép chọn cột status không nằm trong GROUP BY và không có hàm tổng hợp. Để chuẩn SQL, hãy dùng MAX(status) hoặc ANY_VALUE(status).