ºìÁªLinuxÃÅ»§
Linux°ïÖú

ÈçºÎʵÏÖMySQL±íÊý¾ÝËæ»ú¶ÁÈ¡

·¢²¼Ê±¼ä:2006-07-13 13:06:12À´Ô´:ºìÁª×÷Õß:ABC
ÒÔÇ°ÔÚȺÀïÌÖÂÛ¹ýÕâ¸öÎÊÌâ,±È½ÏµÄÓÐÒâ˼.mysqlµÄÓï·¨ÕæºÃÍæ.ËûÃÇÔ­À´¶¼ÏëÓÃPHPµÄʵÏÖËæ»ú,µ«È¡³ö¶àÌõºÃÏñÒª½øÐÐÁ½´ÎÒÔÉϲéѯ.·­ÁËÊÖ²á,ÕÒµ½ÁËÏÂÃæÕâ¸öÓï¾ä,¿ÉÒÔÍê³ÉÈÎÎñÁË¡£


SELECT * FROM table_name ORDER BY rand() LIMIT 5;



¡¡¡¡randÔÚÊÖ²áÀïÊÇÕâô˵µÄ:

¡¡¡¡RAND() £¬RAND(N) £º·µ»ØÔÚ·¶Î§0µ½1.0ÄÚµÄËæ»ú¸¡µãÖµ¡£Èç¹ûÒ»¸öÕûÊý²ÎÊýN±»Ö¸¶¨£¬Ëü±»ÓÃ×÷ÖÖ×ÓÖµ¡£


¡¡¡¡mysql> select RAND();
¡¡¡¡-> 0.5925
¡¡¡¡mysql> select RAND(20);
¡¡¡¡-> 0.1811
¡¡¡¡mysql> select RAND(20);
¡¡¡¡-> 0.1811
¡¡¡¡mysql> select RAND();
¡¡¡¡-> 0.2079
¡¡¡¡mysql> select RAND();
¡¡¡¡-> 0.7888



¡¡¡¡Äã²»ÄÜÔÚÒ»¸öORDER BY×Ó¾äÓÃRAND()ֵʹÓÃÁУ¬ÒòΪORDER BY½«Öظ´¼ÆËãÁжà´Î¡£È»¶øÔÚMySQL3.23ÖУ¬Äã¿ÉÒÔ×ö£º SELECT * FROM table_name ORDER BY RAND()£¬ÕâÊÇÓÐÀûÓڵõ½Ò»¸öÀ´×ÔSELECT * FROM table1,table2 WHERE a=b AND c¡¡¡¡
¡¡¡¡µ«ÎÒÊÔÁËÒ»ÏÂ,8ǧÌõ¼Ç¼µÄ±í,Ö´ÐÐÒ»´ÎÐèÒª0.08 sec,.ÂýÁËЩ
¡¡¡¡
¡¡¡¡ºóÀ´Çë½ÌÁËgoogle,µÃµ½ÈçÏ´úÂë


¡¡¡¡SELECT *
¡¡¡¡FROM table_name AS r1 JOIN
¡¡¡¡(SELECT ROUND(RAND() *
¡¡¡¡(SELECT MAX(id)
¡¡¡¡FROM table_name)) AS id)
¡¡¡¡AS r2
¡¡¡¡WHERE r1.id >= r2.id
¡¡¡¡ORDER BY r1.id ASC
¡¡¡¡LIMIT 5;



Ö´ÐÐЧÂÊÐèÒª0.02 sec.¿ÉϧµÄÊÇ,Ö»ÓÐmysql 4.1.*ÒÔÉϲÅÖ§³ÖÕâÑùµÄ×Ó²éѯ.
ÎÄÕÂÆÀÂÛ

¹²ÓÐ 0 ÌõÆÀÂÛ