0

我需要获取行数最多的表的名称,我可以找到具有函数计数和函数最大值的最大行数,但我不知道如何从哪个表中查看最大值,任何人都可以帮助?

4

4 回答 4

1

试试这个查询:

SELECT table_name, table_rows
FROM   information_schema.TABLES
ORDER  table_rows;

对于所有信息,这是最大的一个:

SELECT table_name, table_rows
FROM information_schema.TABLES WHERE table_rows = 
(SELECT MAX(table_rows) FROM information_schema.TABLES);

php:

$result = mysql_query("SELECT table_name, table_rows
    FROM information_schema.TABLES WHERE table_rows = 
    (SELECT MAX(table_rows) FROM information_schema.TABLES)");

if (!$result) {
    echo "error"
}

while ($row = mysql_fetch_assoc($result)) {
    echo $row['table_name'];
    echo $row['table_rows'];
}
于 2013-10-28T12:25:04.820 回答
0

要直接从任何数据库中获取它,请运行此查询

select TABLE_NAME
FROM information_schema.TABLES
where TABLE_ROWS = (SELECT max(TABLE_ROWS) from information_schema.TABLES);

如果你想在 php 中运行它,你不能只是回显你刚刚运行的查询,这就是你得到 Resource#10 错误的原因。检查这个问题

解决方案是在 Mikhail 答案中使用“mysql_fetch_assoc”,这实际上给了你正确的结果:“time_zone_transition117210”

  • time_zone_transition 是表名
  • 117210 是行数

由于您不明白这是您的答案,因此您似乎想将查询限制为某个模式。所以你在php中的完整答案如下

$result = mysql_query(
    "SELECT table_name, table_rows
    FROM information_schema.TABLES 
    WHERE table_rows = (
        SELECT MAX(table_rows) FROM information_schema.TABLES 
        WHERE TABLE_SCHEMA ='YOUR_SCHEMA_NAME'
    )
    AND TABLE_SCHEMA = 'YOUR_SCHEMA_NAME'"
);

while ($row = mysql_fetch_assoc($result)) {
    echo 'table name is: '. $row['table_name'] .' \n ';
    echo 'number of rows is: '. $row['table_rows'] .' \n ';
}

不要忘记在内部和外部查询中将 YOUR_SCHEMA_NAME 替换为实际名称。

于 2013-10-28T12:31:33.100 回答
0
show table status

会给你你需要的信息。

于 2013-10-28T12:24:43.527 回答
0
$sql = "SHOW TABLES FROM $dbname";
$result = $mysqli->query($sql);

if (!$result) {
    echo "DB Error, could not list tables\n";
    echo 'MySQL Error: ' . mysql_error();
    exit;
}

while ($row = mysql_fetch_row($result)) {
    $count =  "select count(*) as cnt from : {$row[0]}\n";
    $result = $mysqli->query($count);
    $row_array=$result->fetch_array(MYSQLI_ASSOC);
    $print[$row[0]] = $row_array['cnt']; 
}
asort($print);

$print 将保存所有行计数的值,键为表名。使用 asort() 您可以按顺序对其进行排序。

于 2013-10-28T12:26:42.277 回答