Mailing List
Home
Forum Home
MySQL General - General MySQL discussion
MaxDB - Everything about MaxDB, formerly known as SAP DB
MySQL++ - Programming with the C++ API to MySQL
MySQL on Win32 - Runing MySQL on Windows 9x/Me/NT/2000/XP
ODBC - ODBC with the MySQL Connector/ODBC driver
Java Help - Mostly related to the MySQL Connector/J driver
Perl - Perl support for MySQL with DBI and DBD::mysql
GUI - MySQL GUI Tools
Announcement
Subjects
mysql openssl Question
mysql:it 's a db not a dbms how it 's possible?!
Does the binary log enabling affect the MySQL performances?
Strange behavior, Table Level Permission
FULLTEXT query format question
Preventing Duplicate Entries
Comparing and writing out BLOBS
Executing MySQL Commands From Within C Program
Can 't access mysql after kernel upgrade
Mysql 4 0 Oracle Stored Procedure Trigger Conversion
Downgrade Mysql from 4 to 3 23
MySQL Cluster Software
mysql test 4 1 fails with the gis test
ERROR 2002: Can 't connect to local MySQL server through socket
Getting Identity after INSERT
Update one field with more fields from another table
ERROR 1045: Access denied for user: 'root@localhost ' (Using
password: NO)
mysql have same function mthod as Oracle decode()
 
FOUND_ROWS & UNION

FOUND_ROWS & UNION

2006-07-04       - By Taras D

 Back
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/mysql?unsub=mysql@(protected)