sql >> Database >  >> RDS >> Mysql

hoe zorg je ervoor dat een record altijd bovenaan staat in een bepaalde resultatenset in mysql?

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

p.id=14 retourneert 1 als de voorwaarde waar is, 0 anders, dus aflopend sorteren brengt de gewenste rij naar de top.

Het retourneren van een getal uit een vergelijking is een MySQL-functie, met standaard SQL zou je schrijven:

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

Ik vind dit gemakkelijker te lezen dan de UNION , en het zou beter kunnen presteren.



  1. Selecteer de tweede meest minimale waarde in Oracle

  2. cron-taken of PHP-planner

  3. Hoe stel ik MySQL in om met C# te werken?

  4. MySQL - Maak een bestaand veld uniek