Je veux compter tous les enregistrements de toutes les tables, j'ai essayé mais cela ne fonctionne pas.
DELIMITER $
CREATE FUNCTION countr(p_tablename varchar(10)) RETURN int(10) BEGIN DECLARE ra int; DECLARE table_count INT;
SET ra=
(SELECT COUNT(*) INTO table_count
FROM information_schema.tables
WHERE TABLE_SCHEMA = "dest_northwind"
AND TABLE_NAME = p_tablename); RETURN ra; END$ DELIMITER ;
Réponses:
1 pour la réponse № 1Cela fera cela ...
SELECT SUM(TABLE_ROWS)
FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_SCHEMA = DATABASE();
Mise à jour - le questionneur souhaite obtenir uniquement les lignes d'un sous-ensemble de tables, j'ai donc mis à jour ceci pour contenir la somme des tables individuelles ou le nombre de ces fils de table qui leur sont propres.
Somme des lignes du tableau ...
SELECT SUM(TABLE_ROWS)
FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_SCHEMA = DATABASE()
AND TABLE_NAME IN ("Table2","Table1");
Lignes de tableau par tableau ...
SELECT TABLE_NAME,SUM(TABLE_ROWS)
FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_SCHEMA = DATABASE()
AND TABLE_NAME IN ("Table2","Table1")
GROUP BY TABLE_NAME;