Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> MySQL

การใช้ LIKE หลายเงื่อนไขพร้อม ORDER BY ใน MySQL

การเรียงลำดับตามจำนวนเงื่อนไข 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;

ผลลัพธ์

idname
2David
4John Doe
5David Miller
7Bob Doe
1John
3John Smith
6Chris

คำอธิบาย: David ตรง 1 เงื่อนไข (David), John Doe ตรง 1 (Doe), David Miller ตรง 1 (David), Bob Doe ตรง 1 (Doe) → ทั้ง 4 แถวแรกมีคะแนน 1 เหมือนกัน จึงเรียงตาม PK (id) ต่อ

การประยุกต์: เปลี่ยน + เป็น * หรือใช้ CASE WHEN เพื่อกำหนดน้ำหนัก (Weight) ต่างกัน