如何根据某些订单子句选择表格的前N%行?希望只有一个数据库查询
根据this discussion,以下是从PostgreSQL中选择表中前10%行的方法:
SELECT * FROM mytbl ORDER BY num_sales DESC LIMIT
(SELECT (count(*) / 10) AS selnum FROM mytbl)
根据this answer,在ActiveRecord的where子句中嵌套查询将生成嵌套的SELECT,而不是触发两个查询:
Item.where(product_id: Product.where(price: 50))
在没有太多SQL的情况下,如何在ActiveRecord中完成这样的事情?
答案 0 :(得分:1)
这样做效率不高:
total_rows = MyClass.count
limit_rows = (0.1 * total_rows).to_i
MyClass.order("num_sales desc").limit(limit_rows)
当然还是:
MyClass.order("num_sales desc").limit((0.1 * MyClass.count).to_i)