如何检查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? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

Hibernate是不是支持MySql中的limit语句?

使用codeIgniter在MySQL中查找表是不是存在?

如何加快 LIMIT 子句中偏移量较大的 MySQL 查询?

MySQL:如何检查是不是列出了用户

如何检查MySQL中是不是存在一行? (即检查电子邮件是不是存在于 MySQL 中)

MySQL中如何更好的使用Limit?