sql >> Databasteknik >  >> RDS >> Mysql

MySQL - Beställ fråga och visa en slumpmässig rad överst

Använd order by . Här är en metod:

select t.*
from (select t.*, (@rn := @rn + 1) as seqnum
      from tickets t cross join
           (select @rn := 0) params
      order by vip desc, rand()
     ) t
order by (seqnum = 1) desc, price asc;

Detta använder underfrågan för att identifiera den ena raden som ska hållas överst. Sedan använder den denna information för beställning i den yttre frågan.

Om dina rader har en unik identifierare kan du också göra:

select t.*
from tickets t cross join
     (select id from tickets where vip = 1 order by rand() limit 1) as t1
order by (t.id = t1.id) desc, price asc;



  1. Hur kan jag infoga en bild i en SQLite-databas

  2. Laravel:Fel [PDOException]:Kunde inte hitta drivrutinen i PostgreSQL

  3. Xampp MySQL startar inte - Försöker starta MySQL-tjänsten...

  4. Skillnaden mellan PDO->query() och PDO->exec()