php mysql怎么随机获取几条数据?

mysql实现随机获取几条数据的方法

sql语句有几种写法:

1:SELECT * FROM tablename ORDER BY RAND() LIMIT 想要获取的数据条数;

2:

SELECT

*

FROM

`table`

WHERE

id >= (

SELECT

FLOOR(MAX(id) * RAND())

FROM

`table`

)

ORDER BY

id

LIMIT 想要获取的数据条数;

3:

SELECT

*

FROM

`table` AS t1

JOIN (

SELECT

ROUND(

RAND() * (SELECT MAX(id) FROM `table`)

) AS id

) AS t2

WHERE

t1.id >= t2.id

ORDER BY

t1.id ASC

LIMIT 想要获取的数据条数;

4:

SELECT

*

FROM

`table`

WHERE

id >= (

SELECT

floor(

RAND() * (SELECT MAX(id) FROM `table`)

)

)

ORDER BY

id

LIMIT 想要获取的数据条数;

5:

SELECT

*

FROM

`table`

WHERE

id >= (

SELECT

floor(

RAND() * (

(SELECT MAX(id) FROM `table`) - (SELECT MIN(id) FROM `table`)

) + (SELECT MIN(id) FROM `table`)

)

)

ORDER BY

id

LIMIT 想要获取的数据条数;


6:

SELECT

*

FROM

`table` AS t1

JOIN (

SELECT

ROUND(

RAND() * (

(SELECT MAX(id) FROM `table`) - (SELECT MIN(id) FROM `table`)

) + (SELECT MIN(id) FROM `table`)

) AS id

) AS t2

WHERE

t1.id >= t2.id

ORDER BY

t1.id

LIMIT 想要获取的数据条数;


反馈:

实测 38万数据,随机取10条

1 可以随机取值,执行时间1-2秒。 

2 运行超过20秒没反应,试了3次。 

3 取的10条数据是连续的ID,执行0.001秒。

4 随机取10条,id在1-4000之间,执行0.003秒,试了10次以上。 

5 随机取10条,id在1-4000之间,执行0.003秒,试了10次以上。 

6 取的10条数据是连续的ID,执行0.001秒。