从多个表中选择rowid

时间:2012-03-27 21:50:51

标签: mysql count

我似乎无法在其他问题中找到这些信息,即使我认为这是一个基本问题。

在mySQL中,我试图从数千个不同模式中出现的一个表中计算“rowid”列中的行数(因此单独列出模式是不切实际的)。

注意:某些模式没有该表,因此没有信息。

谢谢!

修改

我尝试了下面的脚本并且它一直在返回:

  

致命错误:调用成员函数execute()...

这是在SECOND执行功能上。为了解决这个问题,我手动将第一个sql的结果输入到第二个变量sql中,但这给了我:

  

致命错误:在第18行(又名第一个准备语句)<_ em>的_____上的非对象上调用成员函数prepare()

这是代码。你会看到我一直在玩它(我使用了一种不同的连接方法,看看它是否改变了什么)

<html>
<head>
</head>
<body>

<?php
$db = mysql_connect(localhost,******, *******);


$sql = "SELECT TABLE_SCHEMA, TABLE_NAME
        FROM INFORMATION_SCHEMA.COLUMNS
        WHERE TABLE_NAME = 'Ftrans /*this is our specific table name*/'
        AND COLUMN_NAME = 'rowid'";


$stmt = $db->prepare($sql); /*this is where I got the second error*/
$stmt->execute();

while ($row = $stmt->fetchObject()) {
   // $sql2 = "SELECT COUNT(*) FROM $row->TABLE_SCHEMA.$row->TABLE_NAME";


 $sql2 = "SELECT COUNT(*) FROM fp_AIRG.Ftransi";
    $stmt2 = $db->prepare($sql2);
    $stmt2->execute();
 $count = $stmt2->fetchColumn();
}
mysql_close($db);
?>

</body>
</html>

1 个答案:

答案 0 :(得分:1)

SELECT TABLE_SCHEMA, TABLE_NAME
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_NAME = 'tbl_name'
AND COLUMN_NAME = 'rowid'

然后返回每条记录 -

SELECT COUNT(rowid)
FROM {TABLE_SCHEMA}.{TABLE_NAME}

这是一个基于PHP的实现 -

<?php

try {
    $db = new PDO('mysql:dbname=testdb;host=127.0.0.1', 'username', 'password');
} catch (PDOException $e) {
    echo 'Connection failed: ' . $e->getMessage();
}

$sql = "SELECT TABLE_SCHEMA, TABLE_NAME
        FROM INFORMATION_SCHEMA.COLUMNS
        WHERE TABLE_NAME = 'tbl_name'
        AND COLUMN_NAME = 'rowid'";

$stmt = $db->prepare($sql);
$stmt->execute();

while ($row = $stmt->fetchObject()) {
    $sql = "SELECT COUNT(rowid) FROM `{$row->TABLE_SCHEMA}`.`{$row->TABLE_NAME}`";
    $stmt2 = $db->prepare($sql);
    $stmt2->execute();
    $count = $stmt2->fetchColumn();

    echo "{$row->TABLE_SCHEMA}.{$row->TABLE_NAME}: $count\n";
}

我没有运行它,所以它可能会有一些错误,但它应该让你朝着正确的方向前进。