0

行数が最大のテーブルの名前を取得する必要があります。関数 count と関数 max を使用して行の最大数を見つけることができますが、どのテーブルからその最大数を確認する方法がわかりません。ヘルプ?

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
$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 に答える
0
show table status

必要な情報を提供します。

于 2013-10-28T12:24:43.527 に答える