在mysql中查找数据库中具有最大行数的表

时间:2014-09-09 05:55:48

标签: mysql

正如问题标题所示,我想找到在特定数据库中具有最大行数(条目)的表。我已经能够使用下面的查询提取特定数据库中所有表的名称。

SELECT TABLE_NAME
FROM information_schema.tables
WHERE TABLE_SCHEMA="Some_Database";

如何超越这个?我一直试图为上述目的制定一个嵌套查询,但无法想出一些东西(我对它们不太满意)。请帮助。

编辑:正如此link中给出的table_rows字段没有给出准确的结果。这就是为什么我需要为每个表执行类似MAX (Count(*))的操作。

4 个答案:

答案 0 :(得分:3)

试试这个......

SELECT TABLE_NAME,MAX(TABLE_ROWS)
FROM information_schema.TABLES
WHERE TABLE_SCHEMA = "DB_Name";

请尝试以下两个查询以获得实际结果。

查询1:

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

查询2:

select max(cnt) from (paste the result of first query and remove 
last union all keyword) as tmptable;

答案 1 :(得分:0)

这个怎么样:

SELECT TABLE_NAME
FROM information_schema.TABLES
WHERE TABLE_SCHEMA = "Some_Database"
ORDER BY TABLE_ROWS DESC
LIMIT 1;

答案 2 :(得分:0)

information_schema.tables有一个名为table_rows的列,所以:

SELECT   table_name 
FROM     information_schema.tables 
WHERE    table_schema = 'Some_Database'
ORDER BY table_rows DESC
LIMIT    1;

答案 3 :(得分:0)

我们可以使用此查询获取MySQL中具有最大行数的表名

SELECT  
TABLE_NAME,MAX(TABLE_ROWS)
FROM information_schema.TABLES
WHERE TABLE_SCHEMA = 'DB_Name'
GROUP BY TABLE_NAME ORDER BY MAX(TABLE_ROWS) DESC LIMIT 1;