tp5?怎么随机获取n条数据的方法

1.随机读取连续多条记录。经过实践,可以随机读取多条连续的数据记录,里头取值的一般都是主键ID来进行最大值、最小值的读取:

1

SELECT

*

FROM

example_table

AS

t1

JOIN

(SELECT

ROUND(RAND()

*

((SELECT

MAX(id)

FROM

example_table)-(SELECT

MIN(id)

FROM

example_table))+(SELECT

MIN(id)

FROM

example_table))

AS

id)

AS

t2

WHERE

t1.id

>=

t2.id

ORDER

BY

t1.id

LIMIT

5;

2.随机多条数据。以下两种都是随机读取数据,查询数据速度、随机范围都基本相差不大

1

SELECT

*

FROM

example_table

WHERE

id

>=

((SELECT

MAX(id)

FROM

example_table)-(SELECT

MIN(id)

FROM

example_table))

*

RAND()

+

(SELECT

MIN(id)

FROM

example_table)

LIMIT

5;

1

SELECT

*

FROM

example_table

WHERE

id>=(SELECT

floor(RAND()

*

((SELECT

MAX(id)

FROM

example_table)-(SELECT

MIN(id)

FROM

example_table))

+

(SELECT

MIN(id)

FROM

example_table)))

ORDER

BY

id

LIMIT

5;