使用
order by。这是一种方法:
select t.*from (select t.*, (@rn := @rn + 1) as seqnum from tickets t cross join(select @rn := 0) params order by vip desc, rand() ) torder by (seqnum = 1) desc, price asc;
这使用子查询来标识要保留在顶部的一行。然后,它将这些信息用于外部查询中的排序。
如果您的行具有唯一标识符,则还可以执行以下操作:
select t.*from tickets t cross join (select id from tickets where vip = 1 order by rand() limit 1) as t1order by (t.id = t1.id) desc, price asc;



