您可以使用Order by Rand()函数从数据库中获取随机记录 .
SELECT * FROM tbl_name ORDER BY RAND();
你也可以很容易地将它限制为两行:
SELECT * FROM tbl_name ORDER BY RAND() limit 2;
然而,这将从db获得两个随机行,而不是两个连续行 .
如果您想获得两个随机AND连续行,您可以运行查询以获取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()顺序时可能然后它解决了只返回一行数据的问题 .
select
b.id
from
table1 b,
(
select
a.id as id
from
table1 a
where
a.id
order by
rand()
limit 1
) a
where
b.id>=a.id
order by
b.id
limit 2
;