sql >> Databáze >  >> RDS >> Mysql

MySQL - Objednejte dotaz a zobrazte jeden náhodný řádek nahoře

Použijte order by . Zde je jedna metoda:

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;

To používá poddotaz k identifikaci jednoho řádku, který se má ponechat nahoře. Tyto informace pak použije pro objednání ve vnějším dotazu.

Pokud mají vaše řádky jedinečný identifikátor, můžete také:

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. MySQL GROUP BY více sloupců z různých tabulek

  2. Co je SQL a jak s ním začít?

  3. Příklady DAYNAME() – MySQL

  4. Omezení, aby se zabránilo porušení omezení FK ve třetí tabulce