说明
一个 SELECT
语句可能包含一个 LIMIT
子句,用来限制数据库服务器端返回客户端的行数。在某些情况下,我们需要不再次运行该语句而得知在没有 LIMIT
时到底该语句返回了多少行。我们可以在 SELECT
语句中选择使用 SQL_CALC_FOUND_ROWS
,然后调用 FOUND_ROWS()
函数,获取该语句在没有 LIMIT
时返回的行数。
例如:
第二个 SELECT
语句返回一个数字,表示在没有 LIMIT
子句的情况下,第一个 SELECT
语句返回了多少行。若上述的 SELECT
语句不使用 SQL_CALC_FOUND_ROWS
选项,使用 LIMIT
和不使用 LIMIT
时, FOUND_ROWS()
可能会返回不同的结果。
例如:
假如您正在使用 SQL_CALC_FOUND_ROWS
,系统必须计算出在全部结果集合中有多少行。尽管如此,这也还是比不用 LIMIT
而再次运行查询要快,原因是结果集合不需要被发送到客户端。
SQL_CALC_FOUND_ROWS
和 FOUND_ROWS()
在当您希望限制一个查询返回的行数时是很有用的,同时还能不需要再次运行查询就可以确定全部结果集合中的行数。一个例子就是提供页式显示的 Web 脚本,该显示包含显示搜索结果其他部分的页的链接。使用 FOUND_ROWS()
可以确定剩下的结果需要多少其他的页。
SQL_CALC_FOUND_ROWS
和 FOUND_ROWS()
的应用对于 UNION
查询比对于简单 SELECT
语句更为复杂,原因是在 UNION
中,LIMIT
可能会出现在多个位置。它可能适用于 UNION
中的独立的 SELECT
语句,或是整个的 UNION
结果。
SQL_CALC_FOUND_ROWS
对于 UNION
的期望结果是它返回在没有全局的 的条件下而应返回的行数。SQL_CALC_FOUND_ROWS
和 UNION
一同使用的条件是:
LAST_INSERT_ID()
声明
last_insert_id()
说明
例子