我有一个函数需要选择返回的行数。经过一番谷歌搜索后,我找到了 FOUND_ROWS() 函数。但我认为它不起作用:
SELECT * FROM tipfirme LIMIT 20;
SELECT FOUND_ROWS();
因为它总是返回 1 作为找到的值。
但是,如果我在一行中运行它,它就可以工作。
SELECT FOUND_ROWS() FROM (SELECT * FROM tipfirme LIMIT 20) as T
我做错了什么还是功能坏了?
我有一个函数需要选择返回的行数。经过一番谷歌搜索后,我找到了 FOUND_ROWS() 函数。但我认为它不起作用:
SELECT * FROM tipfirme LIMIT 20;
SELECT FOUND_ROWS();
因为它总是返回 1 作为找到的值。
但是,如果我在一行中运行它,它就可以工作。
SELECT FOUND_ROWS() FROM (SELECT * FROM tipfirme LIMIT 20) as T
我做错了什么还是功能坏了?
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
没有按照你的想法做;它将返回与子选择返回的行数一样多的行,并且每个行都将具有先前执行的选择返回的行数,与子选择中的行数完全无关。