Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

MySQL - Truy vấn đặt hàng và hiển thị một hàng ngẫu nhiên ở trên cùng

Sử dụng order by . Đây là một phương pháp:

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;

Điều này sử dụng truy vấn con để xác định một hàng cần giữ ở trên cùng. Sau đó, nó sử dụng thông tin này để đặt hàng trong truy vấn bên ngoài.

Nếu các hàng của bạn có một số nhận dạng duy nhất, bạn cũng có thể làm như sau:

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. Làm cách nào để xóa tất cả các ký tự số không phải chữ cái khỏi một chuỗi trong MySQL?

  2. Định vị địa lý truy vấn MySQL

  3. Symfony2 trả về JSON trống trên lệnh gọi AJAX trong khi biến không trống

  4. # 1222 - Các câu lệnh SELECT đã sử dụng có một số cột khác nhau

  5. Truy xuất 10 hàng TOP mà không cần sử dụng TOP hoặc LIMIT? - Câu hỏi Phỏng vấn Tuần # 247