sql >> Databasteknik >  >> RDS >> Mysql

hur ser man till att en post alltid är överst i en given resultatuppsättning i mysql?

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

p.id=14 returnerar 1 om villkoret är sant, 0 annars, så sortering fallande för den önskade raden till toppen.

Att returnera ett nummer från en jämförelse är en MySQL-funktion, med standard SQL skulle du skriva:

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

Jag tycker att detta är lättare att läsa än UNION , och det kanske fungerar bättre.



  1. LOAD DATA LOCAL INFILE ger felet Det använda kommandot är inte tillåtet med denna MySQL-version

  2. Hur lägger man till kommentarer till tabell eller kolumn i mysql med SQLAlchemy?

  3. Kontrollera om ett objekt är en lagrad procedur genom att använda OBJECTPROPERTY() i SQL Server

  4. mysql SELECT IF-sats med OR