MySQL FOUND_ROWS() 方法的 SQL 等效项是啥?

Posted

技术标签:

【中文标题】MySQL FOUND_ROWS() 方法的 SQL 等效项是啥?【英文标题】:What is the DQL Equivalent of MySQL's FOUND_ROWS() Method?MySQL FOUND_ROWS() 方法的 SQL 等效项是什么? 【发布时间】:2012-02-17 02:09:34 【问题描述】:

是否有任何方法或技术可以从 select 查询中获取结果数量,就好像它在没有使用 DQL 的 limit 子句的情况下运行一样?这种行为是否类似于在 mysql 中使用 SQL_CALC_FOUND_ROWSFOUND_ROWS()

【问题讨论】:

【参考方案1】:

是的,是的。 低于 2.2 的 Doctrine 版本有 Paginator extension。 从 2.2 版开始 Doctrine 附带了一个 Paginator 用于开箱即用的 DQL 查询。

使用非标准的 DB 功能(如 SQL_CALC_FOUND_ROWS)对于 Doctrine(或其他 DBAL)来说不是很好的做法。 Doctrine 对用户隐藏了所有与 DB 相关的情况。所以你不能考虑将 SQL_CALC_FOUND_ROWS 与 Doctrine 一起使用,除非它不是跨数据库 SQL 的一部分。

【讨论】:

我不知道如何获得总记录量,就像执行SQL_CALC_FOUND_ROWS一样。

以上是关于MySQL FOUND_ROWS() 方法的 SQL 等效项是啥?的主要内容,如果未能解决你的问题,请参考以下文章

使用limit查询的同时取得总的记录数:SQL_CALC_FOUND_ROWS和FOUND_ROWS()

分页得到查询总数的方法 mysql

Spring JDBC FOUND_ROWS 安全吗?

sq注入与python操作mysql

mysql基础总结

mysql-sq;语句