sql >> データベース >  >> RDS >> Mysql

MySQL-クエリを並べ替えて、上部にランダムな行を1つ表示します

    order byを使用する 。これが1つの方法です:

    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;
    

    これは、サブクエリを使用して、一番上に保持する1つの行を識別します。次に、この情報を使用して、外部クエリでの順序付けを行います。

    行に一意の識別子がある場合は、次のこともできます。

    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ルートパスワードを回復する

    2. Access2016でデータベースを手動で圧縮および修復する方法

    3. AndroidでのSQLite拡張クエリ構文

    4. PostgreSQLでのデータベースの一覧表示と切り替え