Hi everyone,

I have a couple of questions invovling using FOUND_ROWS() and UNION.
The manual states that:

"The value of FOUND_ROWS() is exact only if UNION ALL is used. If
UNION without ALL
is used, duplicate removal occurs and the value of FOUND_ROWS() is
only approximate."

I am using UNION DISTINCT. In what way is the value approximate? I
have tried some test queries using UNION DISTINCT and it seems to give
the correct number of results (ie: FOUND_ROWS isn't including the rows
that appear twice). Perhaps the 'duplicate removal occurs' statement
means that FOUND_ROWS doesn't find the number of rows in the UNION of
the result sets because DISTINCT wasn't specified (ie: it gives the
number of rows after duplicates have been removed)?

If it is the case the sometimes/all the time FOUND_ROWS doesn't give
the correct number of distinct results, ss there anyway of getting
over this limitation apart from executing the query twice (once with
the limit and once without the limit)?

Thanks

Taras

Test code:
=========================
(select SQL_CALC_FOUND_ROWS * from s where ID <= 20)UNION(select *
from s where ID <= 50) LIMIT 0,30;

select found_rows();

Gives 50 results, which is the correct value. If duplicate entries
were being counted, the above query would result in 70 rows.

--
MySQL General Mailing List
For list archives: http://lists.mysql.com/mysql
To unsubscribe:    http://lists.mysql.com/[EMAIL PROTECTED]

Reply via email to