【问题标题】:Mysql - LIMIT by Percentage?Mysql - 按百分比限制?
【发布时间】:2009-08-20 22:16:05
【问题描述】:

假设我在 Select Query 中定义了一个别名“count”,并且我想将返回的数量限制为 count / 5(或表的 20%)。

我该怎么做? Mysql 似乎只接受整数,而不是函数。

【问题讨论】:

    标签: mysql sql limit


    【解决方案1】:

    正确。 LIMIT 子句采用偏移量和行数,而不是百分比。您正在考虑支持 SELECT TOP 20 PERCENT ... 的 Microsoft SQL Server(请注意,标准 SQL 中未指定 LIMITTOP)。

    我会在两个查询中这样做:

    SELECT COUNT(*) FROM MyTable WHERE ...conditions...
    
    SELECT * FROM MyTable WHERE ...conditions... ORDER BY ...order... LIMIT ?
    

    将参数?替换为计数/5。

    您不必在一个查询中解决所有问题。

    【讨论】:

    • 补充一点,我相信运行这两个查询不会造成很大的开销,因为 MySQL 应该缓存第一个查询的结果,而第二个查询实际上会运行快很多。
    【解决方案2】:

    LIMIT 子句可以有 2 个参数,并且必须是整数常量。

    你可以试试这样的

    SET @skip=1; SET @numrows=(select count(*) div 5 from tbl );
    PREPARE STMT FROM 'SELECT * FROM tbl LIMIT ?, ?';
    EXECUTE STMT USING @skip, @numrows;
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-10-21
      • 1970-01-01
      • 2017-06-21
      • 2021-01-21
      • 1970-01-01
      • 2012-09-25
      相关资源
      最近更新 更多