【发布时间】:2013-10-28 12:17:00
【问题描述】:
我需要获取行数最多的表的名称,我可以找到具有函数 count 和函数 max 的最大行数,但我不知道如何从哪个表中查看最大值,有人可以帮忙吗?
【问题讨论】:
我需要获取行数最多的表的名称,我可以找到具有函数 count 和函数 max 的最大行数,但我不知道如何从哪个表中查看最大值,有人可以帮忙吗?
【问题讨论】:
试试这个查询:
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'];
}
【讨论】:
show table status
将为您提供所需的信息。
【讨论】:
$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() 您可以按顺序对其进行排序。
【讨论】:
要直接从任何数据库中获取它,请运行此查询
select TABLE_NAME
FROM information_schema.TABLES
where TABLE_ROWS = (SELECT max(TABLE_ROWS) from information_schema.TABLES);
如果你想在 php 中运行它,你不能只回显你刚刚运行的查询 这就是您收到 Resource#10 错误的原因。检查this question
解决方案是使用 Mikhail 答案中的“mysql_fetch_assoc”,这实际上给了您正确的结果:“time_zone_transition117210”
由于您不明白这是您的答案,因此您似乎想将查询限制为特定架构。 所以你在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 替换为实际名称。
【讨论】: