Есть ли способ запросить БД, чтобы узнать, сколько строк есть во всех таблицах?
то есть.
table1 1234
table2 222
table3 7888
Надеюсь, вы можете посоветовать
Есть ли способ запросить БД, чтобы узнать, сколько строк есть во всех таблицах?
то есть.
table1 1234
table2 222
table3 7888
Надеюсь, вы можете посоветовать
SELECT
TABLE_NAME,
TABLE_ROWS
FROM
`information_schema`.`tables`
WHERE
`table_schema` = 'YOUR_DB_NAME';
SELECT
table_name,
table_rows
FROM
INFORMATION_SCHEMA.TABLES
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
Вышеуказанное даст вам приблизительное значение, но если вы хотите получить точный счет, это можно сделать в два этапа. Сначала выполните запрос, например:
select concat("select '",table_name,"', count(*) from ",table_name,";")
from `information_schema`.`tables`
WHERE `table_schema` = '[your schema here]';
Это создаст список операторов SQL, по одному для каждой таблицы в вашей базе данных, затем вы можете запустить, чтобы получить точное количество.
Это даст вам точное имя таблицы и количество в одном списке
SELECT CONCAT('SELECT ''',table_name,''', COUNT(*) FROM ', table_name, ' union all')
FROM information_schema.tables WHERE table_schema = 'clw';
Синтезируя вышеприведенную информацию и этот пост в один набор запросов, мы получаем запрос самозапускания, который даст точное количество строк:
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;
Возможно, это нужно, если вам просто нужны таблицы и нет просмотров:
SELECT TABLE_NAME, TABLE_ROWS
FROM `information_schema`.`tables`
WHERE `table_schema` = 'schema'
AND TABLE_TYPE = 'BASE TABLE';