0

我有一个函数需要选择返回的行数。经过一番谷歌搜索后,我找到了 FOUND_ROWS() 函数。但我认为它不起作用:

SELECT * FROM tipfirme LIMIT 20;
SELECT FOUND_ROWS();

因为它总是返回 1 作为找到的值。

但是,如果我在一行中运行它,它就可以工作。

  SELECT FOUND_ROWS() FROM (SELECT * FROM tipfirme LIMIT 20) as T

我做错了什么还是功能坏了?

4

1 回答 1

1

FOUND_ROWS 返回上一个请求(整个 select 语句)返回的行数。在我看来,您想要的只是:

select count(1) from (select * From tipfirme limit 20) as T

select found_rows();分开不会总是返回 1;我怀疑你没有测试你想要测试的东西。如果它紧随其后select * from tipfirme limit 20;,它确实会返回选择返回的行数(在限制之后,或者如果您sql_calc_found_rows在上一个选择中指定,则在限制之前)。

SELECT FOUND_ROWS() FROM (SELECT * FROM tipfirme LIMIT 20) as T没有按照你的想法做;它将返回与子选择返回的行数一样多的行,并且每个行都将具有先前执行的选择返回的行数,与子选择中的行数完全无关。

于 2022-02-07T21:26:55.860 回答