MySQL - Как подсчитать все строки в таблице в одном запросе - программирование
Подтвердить что ты не робот

MySQL - Как подсчитать все строки в таблице в одном запросе

Есть ли способ запросить БД, чтобы узнать, сколько строк есть во всех таблицах?

то есть.

table1 1234
table2 222
table3 7888

Надеюсь, вы можете посоветовать

4b9b3361

Ответ 1

SELECT 
    TABLE_NAME, 
    TABLE_ROWS 
FROM 
    `information_schema`.`tables` 
WHERE 
    `table_schema` = 'YOUR_DB_NAME';

Ответ 2

SELECT 
    table_name, 
    table_rows 
FROM 
    INFORMATION_SCHEMA.TABLES

Ответ 3

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

Ответ 4

Вышеуказанное даст вам приблизительное значение, но если вы хотите получить точный счет, это можно сделать в два этапа. Сначала выполните запрос, например:

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

Это создаст список операторов SQL, по одному для каждой таблицы в вашей базе данных, затем вы можете запустить, чтобы получить точное количество.

Ответ 5

Это даст вам точное имя таблицы и количество в одном списке

SELECT CONCAT('SELECT ''',table_name,''', COUNT(*) FROM ', table_name, ' union all') 
      FROM information_schema.tables WHERE table_schema = 'clw';

Ответ 6

Синтезируя вышеприведенную информацию и этот пост в один набор запросов, мы получаем запрос самозапускания, который даст точное количество строк:

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;

Ответ 7

Возможно, это нужно, если вам просто нужны таблицы и нет просмотров:

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