如何检查mysql中是不是使用了limit? [复制]
Posted
技术标签:
【中文标题】如何检查mysql中是不是使用了limit? [复制]【英文标题】:How to check if limit was used in mysql? [duplicate]如何检查mysql中是否使用了limit? [复制] 【发布时间】:2015-05-13 18:31:01 【问题描述】:在 mysql 查询中,我有一些东西,比如我选择和排序,并使用 where 子句等......,最后我有 limit 10
例如。像这样:
Select *
From employee
where fired=0
limit 10
问题是,我怎么知道是否使用了限制并且结果被截断了?基本上我想很容易地知道是否有更多的结果被limit
截断。我不想做类似的事情
Select (count *)
From employee
where fired=0
减法
Select (count *)
From employee
where fired=0
limit 10
有什么简单的方法吗?也许,就像您知道如何在运行插入语句后,您可以使用 php 内置函数 get_sql_id()
(类似的东西)获取 id,是否有 sql_count_without_limit()
?
谢谢
【问题讨论】:
【参考方案1】:您可以将剩余的行作为列返回,如下所示
SET @limit = 10;
SELECT *,
(SELECT count(*) from employee)- @limit as remaining
From employee
where fired=0
limit 10
【讨论】:
不是 count(*) 最多变成 10 吗? 否,如果总行数为 30 并且您应用 limit=10,则剩余的将为 30-10,即 20 这也是一个很酷的答案,可能比 Raymonds 更好,因为我少做一个 php mysql 查询。 很高兴它帮助了你:) 实际上,如果我使用它,那么我需要进行两次查询,一次获取结果,另一次使用几乎相同的代码来获取remaining
。有没有办法将它们结合起来?如果不是,那么我认为 Raymonds 的回答更有效。【参考方案2】:
您可以像这样使用 found_rows 函数:
mysql> SELECT SQL_CALC_FOUND_ROWS * FROM tbl_name
-> WHERE id > 100 LIMIT 10;
mysql> SELECT FOUND_ROWS();
欲了解更多信息,请参阅mysql reference
【讨论】:
此功能已弃用。他们建议使用两个单独的查询。一个有LIMIT
一个没有LIMIT
dev.mysql.com/doc/refman/8.0/en/…【参考方案3】:
你可以这样做
Select *
From employee
where fired=0
limit 10+1
这样:
0-10 values returned: no limit was reached
11 values returned: Limit was reached
然后只使用返回的前 10 个值。
更新雷蒙德的回答比我的好太多了!
【讨论】:
抛出此错误:“#1064 - 您的 SQL 语法有错误;请查看与您的 MySQL 服务器版本相对应的手册,了解在 '+1' 附近使用的正确语法”。跨度>以上是关于如何检查mysql中是不是使用了limit? [复制]的主要内容,如果未能解决你的问题,请参考以下文章
如何加快 LIMIT 子句中偏移量较大的 MySQL 查询?