it-swarm.com.de

MySQL - Wie werden alle Zeilen pro Tabelle in einer Abfrage gezählt?

Gibt es eine Möglichkeit, die Datenbank abzufragen, um herauszufinden, wie viele Zeilen in allen Tabellen vorhanden sind?

d.h.

table1 1234
table2 222
table3 7888

Hoffen Sie, dass Sie beraten können

59
Lee
SELECT 
    TABLE_NAME, 
    TABLE_ROWS 
FROM 
    `information_schema`.`tables` 
WHERE 
    `table_schema` = 'YOUR_DB_NAME';
135
great_llama

Das Obige gibt Ihnen eine Annäherung, aber wenn Sie eine genaue Zählung wünschen, kann dies in zwei Schritten erfolgen. Führen Sie zuerst eine Abfrage wie folgt aus:

select concat("select '",table_name,"', count(*) from ",table_name,";") 
from `information_schema`.`tables` 
WHERE `table_schema` = '[your schema here]';

Daraufhin wird eine Liste von SQL-Anweisungen erstellt, eine für jede Tabelle in Ihrer Datenbank. Sie können dann ausführen, um eine genaue Anzahl zu ermitteln.

6
ande
SELECT 
    table_name, 
    table_rows 
FROM 
    INFORMATION_SCHEMA.TABLES
5
Nir

Dadurch erhalten Sie den genauen Tabellennamen und zählen auf einer einzelnen Liste

SELECT CONCAT('SELECT ''',table_name,''', COUNT(*) FROM ', table_name, ' union all') 
      FROM information_schema.tables WHERE table_schema = 'clw';
5
petrichi
select sum(cnt) from
(
select count(*) as cnt from table1
union ALL
select count(*) as cnt from table2
union ALL
select count(*) as cnt from table3 
)t1
3
a1ex07

Indem wir die obigen Informationen und diesen Beitrag zu einem Satz von Abfragen zusammenfassen, erhalten wir eine selbstschreibende Abfrage, die genaue Zeilenzahlen liefert:

SET @tableSchema = 'my_schema';
SET SESSION group_concat_max_len = 10000000;
SET @rowCounts = (
  SELECT group_concat(CONCAT('SELECT ''',TABLE_NAME,''', COUNT(*) FROM ', TABLE_NAME) SEPARATOR ' union all ')
  FROM information_schema.tables WHERE table_schema = @tableSchema
);
PREPARE statement FROM @rowCounts;
EXECUTE statement;

-- don't run dealloc until you've exported your results ;)
DEALLOCATE PREPARE statement;
3
tjmcewan

Wahrscheinlich möchten Sie dies, wenn Sie nur Tabellen und keine Ansichten möchten:

SELECT TABLE_NAME, TABLE_ROWS
FROM   `information_schema`.`tables` 
WHERE  `table_schema` = 'schema'
       AND TABLE_TYPE = 'BASE TABLE';
0
OneSimpleGeek