FOUND_ROWS() 在 MariaDB 10 中

FOUND_ROWS() in MariaDB 10

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

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

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

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

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

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

FOUND_ROWS returns 前一个请求(整个 select 语句)return 的行数。在我看来你只是想要:

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

select found_rows();分开不会总是return1;我怀疑你没有测试你想要测试的东西。如果它紧跟在 select * from tipfirme limit 20; 之后,它确实 return select return 编辑的行数(在限制之后,或者如果您指定 sql_calc_found_rows 则在限制之前)在之前的 select).

SELECT FOUND_ROWS() FROM (SELECT * FROM tipfirme LIMIT 20) as T 并没有按照您的想法行事;它将 return 与 subselect returned 一样多的行,并且每行将具有 先前执行的 [=27= 的行数] returned,与子select的行数完全无关。