การเรียงลำดับตามจำนวนเงื่อนไข LIKE ที่ตรง
ใช้นิพจน์ Boolean ใน ORDER BY: (col LIKE '%val1%') + (col LIKE '%val2%') ค่า TRUE=1, FALSE=0 ผลรวมบอกจำนวนเงื่อนไขที่ตรง
ตัวอย่าง: เรียงให้ "Doe" และ "David" อยู่บนสุด
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');
SELECT * FROM demo2
ORDER BY
(name LIKE '%Doe%') +
(name LIKE '%David%') DESC;
ผลลัพธ์
| id | name |
|---|---|
| 2 | David |
| 4 | John Doe |
| 5 | David Miller |
| 7 | Bob Doe |
| 1 | John |
| 3 | John Smith |
| 6 | Chris |
คำอธิบาย: David ตรง 1 เงื่อนไข (David), John Doe ตรง 1 (Doe), David Miller ตรง 1 (David), Bob Doe ตรง 1 (Doe) → ทั้ง 4 แถวแรกมีคะแนน 1 เหมือนกัน จึงเรียงตาม PK (id) ต่อ
การประยุกต์: เปลี่ยน + เป็น * หรือใช้ CASE WHEN เพื่อกำหนดน้ำหนัก (Weight) ต่างกัน