Wiem, że to stare pytanie, ale powinieneś być w stanie umieścić wyrażenie w nawiasie, aby je ocenić
SELECT *
FROM `cars`
WHERE `color` = "black"
OR `weight` = "heavy"
OR `type` = "limo"
ORDER BY ( (`color` = "black")
+ (`weight` = "heavy")
+ (`type` = "limo")
) DESC
Każde wyrażenie w nawiasie będzie równe 1, jeśli jest prawdziwe, 0 jeśli fałszywe; w związku z tym suma będzie liczbą dopasowań.