ORDER BY (p.id=14) DESC, (p.mPrice=p.vPrice) DESC
p.id=14
trả về 1
nếu điều kiện là đúng, 0
nếu không, việc sắp xếp giảm dần sẽ đưa hàng mong muốn lên trên cùng.
Trả về một số từ một so sánh là một tính năng của MySQL, với SQL tiêu chuẩn, bạn sẽ viết:
ORDER BY CASE WHEN (p.id=14) THEN 0 ELSE 1 END,
CASE WHEN (p.mPrice=p.vPrice) THEN 0 ELSE 1 END
Tôi thấy nó dễ đọc hơn UNION
và nó có thể hoạt động tốt hơn.