rand()仅表中的最后20行

Ric*_*Joe 1 mysql

假设我的桌子上有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。将任何想法怎样实现?

Nic*_*ick 5

只需使用嵌套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)