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

sar*_*012 1 php mysql

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

我们的想法是,每当网页加载时,随机产品的广告就会有所不同!

使用PHP,我将如何做到这一点?

tbl_products

id code title stock cost rrp

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

谢谢

Qua*_*noi 7

最直接的解决方案是:

SELECT  *
FROM    tbl_products
ORDER BY
        RAND()
LIMIT 1
Run Code Online (Sandbox Code Playgroud)

然而,随着产品数量的增长,这变得不那么有效.

此解决方案:

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

如果您的产品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;
Run Code Online (Sandbox Code Playgroud)

如果ids之间存在差距,则会更频繁地选择大间隙后的产品.

您可以使用特殊的唯一列来代替id,您可以在cron作业中填充无间隙.