使用MYSQL,我希望选择
1)按“价格”列排序后前20行中的5个随机行
2)按“价格”列排序后30个结果(第21-50行)中的15个随机行
使用SQL实现这种性能的最佳方法是什么?请注意,该表包含大约1000000行。
最后一个目的是为这些随机选择的行更新列(SET status=1)。

最佳答案

使用嵌套选择-在这种情况下应该很快

select * from
(
select .... from table
order by price
limit X, Y
)
order by random

用适当的值替换X和Y
请注意,根据特定的关系数据库管理系统,“按随机顺序”和“限制”子句可能有所不同!这是MySQL的方式。
最重要的是,服务器将首先执行内部select,它只返回20-30行(取决于limit子句),您可以在外部select中按随机顺序对其排序。如果price列被索引,这将足够快

关于mysql - SQL在排序后选择前Y个中的X个随机行,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/16445490/

10-12 12:42
查看更多