ORDER BY बूलियन एक्सप्रेशन और RAND() के साथ विशिष्ट पंक्ति को शीर्ष पर रखना
इसके लिए ORDER BY RAND() के साथ LIMIT का उपयोग करें। पहले टेबल बनाएं:
mysql> create table DemoTable1426 ( FirstName varchar(20) ); Query OK, 0 rows affected (0.59 sec)
रिकॉर्ड डालें:
mysql> insert into DemoTable1426 values('John'); Query OK, 1 row affected (0.17 sec)
mysql> insert into DemoTable1426 values('Adam'); Query OK, 1 row affected (0.10 sec)
mysql> insert into DemoTable1426 values('Robert'); Query OK, 1 row affected (0.12 sec)
mysql> insert into DemoTable1426 values('David'); Query OK, 1 row affected (0.12 sec)
mysql> insert into DemoTable1426 values('Sam'); Query OK, 1 row affected (0.13 sec)
सभी रिकॉर्ड देखें:
mysql> select * from DemoTable1426;
आउटपुट:
+-----------+ | FirstName | +-----------+ | John | | Adam | | Robert | | David | | Sam | +-----------+ 5 rows in set (0.00 sec)
रिकॉर्ड क्रमबद्ध करें लेकिन एक विशिष्ट नाम को ठीक करें और बाकी मानों (केवल कुछ) को यादृच्छिक रूप से प्रदर्शित करने की क्वेरी:
mysql> select * from DemoTable1426 order by (FirstName='Robert') desc, RAND() limit 3;
परिणाम:
+-----------+ | FirstName | +-----------+ | Robert | | Adam | | David | +-----------+ 3 rows in set (0.52 sec)
व्याख्या: (FirstName='Robert') एक बूलियन अभिव्यक्ति है जो TRUE (1) या FALSE (0) मूल्यांकन करती है। DESC के साथ, TRUE (1) पहले आता है, इसलिए 'Robert' शीर्ष पर होता है। शेष पंक्तियों के लिए RAND() यादृच्छिक क्रम देता है। LIMIT 3 केवल शीर्ष 3 पंक्तियां लौटाता है। यह "फीचर्ड" आइटम को शीर्ष पर रखते हुए बाकी को यादृच्छिक बनाने के लिए उपयोगी है।