获得最少的前 n 行

Posted

技术标签:

【中文标题】获得最少的前 n 行【英文标题】:Getting minimum of top n rows 【发布时间】:2015-11-12 07:15:55 【问题描述】:

我希望从 mysql 的前 n 行中的表中获取 min(somecolumn)。获得结果的最佳查询是什么?

到目前为止我找到了

select min(a.column) from (select column from table limit 2000) a

select min(a.column) from table a INNER JOIN  (select column from table b limit 2000) on a.pricolumn = b.pricolumn.

【问题讨论】:

你有什么问题? 【参考方案1】:

select min(t.columnName) from tableName as t limit 10(这里以前 10 行为例)

select outerTable.columnName from (select distinct t.columnName from tableName as t order by t.columnName asc limit 10) as outerTable limit 1,1

【讨论】:

嗨 Prakit 感谢您的回复 ***.com/questions/4708708/mysql-order-by-limit 根据上述帖子查询“select min(t.columnName) from tableName as t limit 10”将从整个表中返回 min(t.columname) 而不是中间10 条记录,但您的第二个查询将起作用。但我担心的是第二个查询不使用索引,因此执行速度很慢【参考方案2】:

试试下面的语法:

SELECT min(columname) FROM tablename limit n

【讨论】:

嗨 Ritobroto,感谢您的回复 Query "select min(t.columnName) from tableName as t limit 10" 将从整个表中返回 min(t.columname) 而不是 10 条记录。 请尝试:SELECT min(columname) FROM tablename WHERE columnname BETWEEN lowerlimit AND higherlimit LIMIT n;你想要这个吗?

以上是关于获得最少的前 n 行的主要内容,如果未能解决你的问题,请参考以下文章

RandomForestClassifier 获得前 N 个预测和相应的概率

通过20%的工作获得80%的性能改善jmeter实战

纪念品分组

获得给定工作的最少员工

java怎样获得当前时间的前几天

获得指定时间的前一个时间的分组