Comment obtenir des valeurs de nombre de lignes dans MySQL, comme le fait @@ROWCOUNT
dans mssql?
Pour les SELECT, vous pouvez utiliser la construction FOUND_ROWS
( documentée ici ):
SELECT SQL_CALC_FOUND_ROWS something FROM your_table WHERE whatever;
SELECT FOUND_ROWS( ) ;
qui renverra le nombre de lignes de la dernière requête SELECT
(ou si la première requête comporte une clause LIMIT
, elle renvoie le nombre de lignes qu'il y aurait eu sans LIMIT
).
Pour UPDATE
/DELETE
/INSERT
, il s’agit du ROW_COUNT construct
INSERT INTO your_table VALUES (1,2,3);
SELECT ROW_COUNT();
qui retournera le nombre de lignes affectées.
mysql> SELECT SQL_CALC_FOUND_ROWS * FROM tbl_name
-> WHERE id > 100 LIMIT 10;
mysql> SELECT FOUND_ROWS();
En savoir plus à ce sujet ici
Le moyen le plus simple serait d'utiliser une variable:
mysql> SELECT @rowcount:=COUNT(*) FROM my_table;
mysql> SELECT @rowcount;
Ou vous pouvez utiliser la construction FOUND_ROWS()
après avoir placé un SQL_CALC_FOUND_ROWS dans une instruction SELECT.
mysql> SELECT SQL_CALC_FOUND_ROWS * FROM my_table;
mysql> SELECT FOUND_ROWS();
Il y a un autre moyen:
CREATE TEMPORARY TABLE `results` AS ( *** Your query without LIMIT *** );
Obtenez le nombre de lignes
SELECT COUNT(*) FROM `results`;
Obtenez votre sous-ensemble
SELECT * FROM `results` LIMIT 5,10;
La table temporaire n'existe que dans la session en cours. Je voudrais encore nettoyer après
DROP TEMPORARY TABLE `results`;