Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Wie kann sichergestellt werden, dass ein Datensatz in einer bestimmten Ergebnismenge in MySQL immer ganz oben steht?

ORDER BY (p.id=14) DESC, (p.mPrice=p.vPrice) DESC

p.id=14 gibt 1 zurück wenn die Bedingung wahr ist, 0 andernfalls bringt eine absteigende Sortierung die gewünschte Zeile nach oben.

Das Zurückgeben einer Zahl aus einem Vergleich ist eine MySQL-Funktion, mit Standard-SQL würden Sie schreiben:

ORDER BY CASE WHEN (p.id=14) THEN 0 ELSE 1 END,
         CASE WHEN (p.mPrice=p.vPrice) THEN 0 ELSE 1 END

Ich finde das einfacher zu lesen als die UNION , und die Leistung könnte besser sein.