php - 从数据库中随机选择一行的函数!

标签 php mysql

我正在创建一个在线商店网站,该网站需要从数据库中选择随机产品的功能。

想法是每次加载网页时都会有一个不同的随机产品广告!

使用 PHP,我将如何做这件事?

tbl_products

编号 代码 标题 库存 成本 rrp

这些是我需要从数据库访问的行。

谢谢

最佳答案

最直接的解决方案是:

SELECT  *
FROM    tbl_products
ORDER BY
        RAND()
LIMIT 1

但是,随着产品数量的增加,这种效率会降低。

这个解决方案:

效率更高,但仍然需要全表扫描。

如果您的产品 ID 或多或少均匀分布,请使用:

SELECT  p.*
FROM    (
        SELECT
                (
                (
                SELECT  MAX(id)
                FROM    tbl_products
                ) -
                (
                SELECT  MIN(id)
                FROM    tbl_products
                )
                ) * RAND() AS rnd
        ) q
JOIN    tbl_products p
ON      id >= rnd
ORDER BY
        id
LIMIT 1;

如果您在 id 之间存在差距,则往往会更频繁地选择大差距之后的产品。

您可以为此目的使用一个特殊的唯一列而不是 id,您应该在 cron 作业中无间隙地填充它。

关于php - 从数据库中随机选择一行的函数!,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6748609/

相关文章:

PHP DOM 解析 <hr> 标签之间的文本

javascript - 选择其他下拉菜单时更改下拉菜单值

MySQL数据库与ASP.NET全局连接

mysql - 通常的数据库性能调整技巧是否对 Drupal 等第三方应用程序无效

php - HTML 提交表单和 PHP 似乎不起作用

mysql - 在 MySQL 中使用 CAST() 将 VARCHAR 转换为 CHAR,但最终结果仍然是 VARCHAR 而不是 CHAR

php - 我正在尝试将数组转换为 XML,但未能 100% 正确

php curl,检测响应是否为 gzip

php - 在 if/elseif block 中使用 echo <<<EOT 出现意外的 EOF

带有 WHERE IN 子句的 MySQL 限制