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

Nhiều toán tử LIKE kết hợp ORDER BY trong MySQL

Giới thiệu

Để sắp xếp kết quả dựa trên số lượng từ khóa khớp (mỗi LIKE khớp được 1 điểm), dùng tổng các biểu thức boolean (col LIKE '%kw%') trong ORDER BY ... DESC. Trong MySQL, TRUE = 1, FALSE = 0.

Ví dụ: Ưu tiên tên chứa 'Doe' và 'David'

Bước 1: Tạo bảng và dữ liệu

CREATE TABLE demo2 (
    id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
    name VARCHAR(100)
);
INSERT INTO demo2 (name) VALUES 
('John'), ('David'), ('John Smith'), ('John Doe'), ('David Miller'), ('Chris'), ('Bob Doe');

Bước 2: ORDER BY tổng điểm LIKE

SELECT * FROM demo2
ORDER BY 
    (name LIKE '%Doe%') + 
    (name LIKE '%David%') DESC;

Kết quả

+----+--------------+
| id | name         |
+----+--------------+
| 2  | David        |  -- khớp 'David' (1 điểm)
| 4  | John Doe     |  -- khớp 'Doe' (1 điểm)
| 5  | David Miller |  -- khớp 'David' (1 điểm)
| 7  | Bob Doe      |  -- khớp 'Doe' (1 điểm)
| 1  | John         |  -- 0 điểm
| 3  | John Smith   |  -- 0 điểm
| 6  | Chris        |  -- 0 điểm
+----+--------------+

Lưu ý: Các hàng cùng điểm sẽ giữ thứ tự không xác định (thường theo thứ tự chèn). Thêm cột sắp xếp phụ: ORDER BY (...) DESC, name.