Php MySQL-选择top后如何选择random?

Php MySQL-选择top后如何选择random?,php,mysql,sql,Php,Mysql,Sql,我有这样一个问题: 从estore.product ORDER BY view DESC LIMIT 9中选择Id、名称、图像、价格、视图 我想在那个查询中随机选择5条记录。我尝试过,但此代码不起作用: SELECT Id, Name, Image, Price, View FROM ( SELECT Id, Name, Image, Price, View FROM estore.product ORDER BY View DESC LIMIT 9) ORDER BY RAN

我有这样一个问题:

从estore.product ORDER BY view DESC LIMIT 9中选择Id、名称、图像、价格、视图

我想在那个查询中随机选择5条记录。我尝试过,但此代码不起作用:

SELECT Id, Name, Image, Price, View FROM (
    SELECT Id, Name, Image, Price, View FROM estore.product ORDER BY View DESC LIMIT 9) 
    ORDER BY RAND() LIMIT 5

我该怎么办?感谢收看?

必须命名子查询。尝试:

LIMIT 9) as SubQueryAlias ORDER BY RAND() 
        ^^^^^^^^^^^^^^^^^^

必须命名子查询。尝试:

LIMIT 9) as SubQueryAlias ORDER BY RAND() 
        ^^^^^^^^^^^^^^^^^^

你可能想去读这篇文章


如果您的表非常大(并且可能最终成为一个产品表),那么rand()限制是一个非常慢的查询

您可能需要阅读此线程
SELECT Id, Name, Image, Price, View FROM estore.product ORDER BY RAND() LIMIT 5

如果您的表非常大(并且它可能最终成为一个产品表),那么rand()限制是一个非常慢的查询

SELECT Id, Name, Image, Price, View FROM estore.product ORDER BY RAND() LIMIT 5
(对订单和限制使用子查询相同的选择是疯狂的…)


(对订单和限制使用子查询相同的选择是疯狂的…)

编辑侧注:对代码使用
四空格缩进
而不是使用
:)编辑侧注:对代码使用
四空格缩进
而不是使用
:)您可以从查询中看到最多9行将按
兰德()排序
再看一看子查询中的limit子句(我看到了9:),但它并没有改变它作为一个查询的速度慢/代价高。我刚刚启动了MySQL,所以在这段时间我需要我的程序不断运行。从查询中可以看出,最多9行将按
rand()排序
再看一看子查询中的limit子句(我看到了9:),但它并没有改变查询的速度慢/代价高。我刚刚启动了MySQL,所以这段时间我需要我的程序不断运行。