假设我的桌子上有1000行posts。
我想忽略980行,仅rand()最新的20行,并仅向用户显示4个结果(这4行始终位于最新的20行中)。
id是自动递增的,因此我想获取最后20个id。
select id, name, photo, text from posts order by rand() limit 4
Run Code Online (Sandbox Code Playgroud)
这将兰德所有1000条线,并获得4个结果。我只想兰特最新的20,ids并显示结果,例如:
993 - josh - img.jpg - some text
987 - marie - img2.jpg - some text
982 - ben - img3.jpg - some text
995 - alfred - img4.jpg - some text
Run Code Online (Sandbox Code Playgroud)
请注意,我只将ID 980放到1000。将任何想法怎样实现?
只需使用嵌套SELECT,首先选择最后20个帖子(使用ORDER BY id DESC),然后随机选择其中4 个帖子:
SELECT *
FROM (SELECT id, name, photo, text
FROM posts
ORDER BY id DESC
LIMIT 20) p
ORDER BY RAND()
LIMIT 4
Run Code Online (Sandbox Code Playgroud)