mysql - 检查带有 LIMIT 的 SELECT 语句是否返回所有行

标签 mysql select limit rows

有没有办法检查带有 LIMIT 的 SELECT 语句是否返回所有可能的行,例如我有 LIMIT 50 但我有 64 行,它应该添加 false,如果我有 28 行,它应该添加 true。我想我可以用 php 通过做类似的事情来实现这一点,但是仅使用 SQL 可以吗?

$sql= "(SELECT * FROM tbl_group_message WHERE gid = ".$gid." ORDER BY mid DESC LIMIT ".$more.") ORDER BY mid ASC";
$messages = mysqli_query($dbc,$sql);
$row_cnt1 = mysqli_num_rows($messages);


$sql = "(SELECT COUNT(*) FROM  tbl_group_message WHERE gid = ".$gid." ORDER BY mid DESC) ORDER BY mid ASC";
$messages = mysqli_query($dbc,$sql);
$row_cnt2 = mysqli_num_rows($messages);

if(row_cnt1 < $row_cnt2){
   $allinlimit = true;
}
else{
   $allinlimit = false;
}

最佳答案

您可以使用SQL_CALC_FOUND_ROWSFOUND_ROWS:

$sql= "SELECT SQL_CALC_FOUND_ROWS * FROM tbl_group_message WHERE gid = ".$gid." ORDER BY mid DESC LIMIT ".$more." ORDER BY mid ASC";

然后运行查询 SELECT FOUND_ROWS() 作为对数据库的下一个查询。

更多信息请参见 documentation .

编辑:

正如OP指出的,COUNT(*)似乎更快(在这种情况下)。

关于mysql - 检查带有 LIMIT 的 SELECT 语句是否返回所有行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30545780/

相关文章:

mysql - mysql中的binlog是什么?

php - 用php填充表格

mysql - 两个外键指向同一个主键 select 语句 MYSQL

php - 如何在sql查询的select列中按字母顺序获取?

mysql - 如何让 MySQL 识别 LIKE 和 REGEXP 中的多字节字符?

mysql - 按两个字段排序 - 索引

php - 页面加载时重新加载下拉菜单

MySQL 根据匹配百分比或限制检索结果

java - 如何以编程方式限制下载速度?

ios - 广告标识符 [IDFA] 使用不当(限制广告跟踪)