Mysql
 sql >> Baza danych >  >> RDS >> Mysql

MySQL - Zamów zapytanie i wyświetl jeden losowy wiersz u góry

Użyj order by . Oto 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;

Wykorzystuje to podzapytanie do zidentyfikowania jednego wiersza, który ma pozostać na górze. Następnie wykorzystuje te informacje do zamawiania w zewnętrznym zapytaniu.

Jeśli Twoje wiersze mają unikalny identyfikator, możesz również wykonać:

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. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. MySQL IN z LIKE

  2. Porządkowanie wyników MySQL według sekwencji IN?

  3. Jak wdrożyć MySQL na Ubuntu i w pełni zarządzany?

  4. Problemy z połączeniem z serwerem mysql:BŁĄD 2003 (HY000)

  5. Rekurencyjne zapytanie MySQL z relacyjnym innoDB