Does Mysql have an equivalent to @@ROWCOUNT like in mssql?
How can I ge开发者_如何学Got row count values in MySQL as @@ROWCOUNT
does in mssql?
For SELECTs you can use the FOUND_ROWS
construct (documented here):
SELECT SQL_CALC_FOUND_ROWS something FROM your_table WHERE whatever;
SELECT FOUND_ROWS( ) ;
which will return the number of rows in the last SELECT
query (or if the first query has a LIMIT
clause, it returns the number of rows there would've been without the LIMIT
).
For UPDATE
/DELETE
/INSERT
, it's the ROW_COUNT construct
INSERT INTO your_table VALUES (1,2,3);
SELECT ROW_COUNT();
which will return the number of affected rows.
mysql> SELECT SQL_CALC_FOUND_ROWS * FROM tbl_name
-> WHERE id > 100 LIMIT 10;
mysql> SELECT FOUND_ROWS();
Read more about this here
The simplest way would be to use a variable:
mysql> SELECT @rowcount:=COUNT(*) FROM my_table;
mysql> SELECT @rowcount;
Or you can use FOUND_ROWS()
construct after putting a SQL_CALC_FOUND_ROWS in a SELECT statement.
mysql> SELECT SQL_CALC_FOUND_ROWS * FROM my_table;
mysql> SELECT FOUND_ROWS();
There is another way:
CREATE TEMPORARY TABLE `results` AS ( *** Your query without LIMIT *** );
Get the row count
SELECT COUNT(*) FROM `results`;
Get your subset
SELECT * FROM `results` LIMIT 5,10;
The temporary table exists only in the current session. I would still clean-up afterwards
DROP TEMPORARY TABLE `results`;
Count the number of rows in a sub-query in the where clause. Then test if the total number of rows is greater than zero.
SELECT customerNumber, customerName, creditLimit FROM customers where (SELECT count(*) as tot FROM customers) > 0;
精彩评论