MySQL - 选择顶部后如何选择随机?
Posted
技术标签:
【中文标题】MySQL - 选择顶部后如何选择随机?【英文标题】:MySQL - How to select random after select top? 【发布时间】:2013-06-17 15:10:40 【问题描述】:我有一个这样的查询:
SELECT Id, Name, image, price, view FROM estore.product ORDER BY view DESC LIMIT 9
我想在该查询中随机选择 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
我该怎么办?感谢收看?
【问题讨论】:
编辑旁注:在您的代码中使用four-space indentation
而不是使用this
:)
【参考方案1】:
必须命名子查询。试试:
LIMIT 9) as SubQueryAlias ORDER BY RAND()
^^^^^^^^^^^^^^^^^^
【讨论】:
【参考方案2】:你可能想去阅读这个帖子 Multiple rows alternative for RAND()
如果您的表非常大(并且它可能最终会成为产品表非常大),则 rand() 限制是一个非常慢的查询
【讨论】:
从查询中可以看到最多有9行会按照rand()
排序
再看一下子查询中的limit子句
是的,我看到了 9 :),但它并没有改变它作为查询的缓慢/昂贵。
我刚启动 mysql,所以这次我需要运行我的程序。【参考方案3】:
SELECT Id, Name, Image, Price, View FROM estore.product ORDER BY RAND() LIMIT 5
(使用子查询进行排序和限制相同的选择是疯狂的......)
【讨论】:
以上是关于MySQL - 选择顶部后如何选择随机?的主要内容,如果未能解决你的问题,请参考以下文章