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()
) t
order 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 t1
order by (t.id = t1.id) desc, price asc;