【问题标题】:Displaying exactly 6 random entries from table正好显示表中的 6 个随机条目
【发布时间】:2016-04-01 21:42:18
【问题描述】:

我试图准确地显示 6 个随机“娱乐”条目,但在我当前的查询中,它得到一个介于 1 和 6 之间的随机数,并显示该条目数。如何更新此查询以使其准确显示我的文章表中的 6 个随机娱乐条目?这是我当前的查询:

 SELECT
    r1.*
FROM
    Articles AS r1
    INNER JOIN (SELECT(RAND() * (SELECT MAX(id) FROM Articles)) AS id) AS r2
WHERE
    r1.id >= r2.id
    AND r1.category = 'entertainment'
LIMIT 6;

表结构如下:

table Articles
 - id (int)
 - category (varchar)
 - title (varchar)
 - image (varchar)
 - link (varchar)
 - Counter (int)
 - dateStamp (datetime)

【问题讨论】:

  • 您能否为我们提供一些有关您的表结构的见解。相关列是什么?r1 表代表什么?
  • @Pevara 我在文章表中有 7 列。 id(唯一),category(文章的类别,即娱乐),title(文章的标题),image(文章的图片URL),link(文章的URL),Counter(文章的个数)文章的浏览次数),dateStamp(文章发表的日期)。

标签: php mysql mysqli


【解决方案1】:

试试:

SELECT
    r1.*
FROM
    Articles AS r1
WHERE
    r1.category = 'entertainment'
ORDER BY RAND()
LIMIT 6;

我猜这就是您对子查询的尝试?

【讨论】:

  • 我试图不使用 ORDER BY RAND(),因为它的性能效率低下
  • ORDER BY RAND() 确实不能很好地扩展,但除非您期望拥有数千篇文章,否则我怀疑其影响可以忽略不计。而且我非常喜欢尽可能保持简单......
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-04-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-01-03
  • 2018-03-08
相关资源
最近更新 更多