您可以使用Order by Rand()函数从数据库中获取随机记录。
SELECT * FROM tbl_name ORDER BY RAND();
您也可以很容易地将其限制为两行,如下所示:
SELECT * FROM tbl_name ORDER BY RAND() limit 2;
然而,这将从数据库中获得两个随机行,而不是两个连续的行。
如果您想获得两个随机和连续的行,您可以运行一个查询来获取 ID,并运行一个子查询来获取它之后的下一个 ID。
至于将数据保存在一个/两个表中,请务必将其保存在两个表中。将保存投票的第二个表与指向图像 ID 的链接链接起来。显然,根据需要在链接(和或其他字段)上添加所需的索引。
编辑:这是让您在一行中获取后续两行数据的代码:
select
a.id,
(
select
min(c.id)
from
table1 c
where
c.id>a.id
limit 1
) as id2
from
table1 a
order by
rand()
limit 1;
编辑 2:如果您希望它们作为单独的行来提取各种其他位,我在下面提供了查询。我使用了一个额外的子查询,就好像最初的查询碰巧提取了最大值(可能在使用 rand() 的 order 时可能,然后它解决了只返回一行数据的问题。
select
b.id
from
table1 b,
(
select
a.id as id
from
table1 a
where
a.id<(select max(id) from table1 limit 1)
order by
rand()
limit 1
) a
where
b.id>=a.id
order by
b.id
limit 2
;