您好我有一个包含4000个表的MySql数据库。所有表都具有相同的数据结构。我想从一列中检索数据" name"这是在所有表中。我想列出所有数据。
我搜索了谷歌,堆栈溢出和更多资源。但是,如果没有加入或结合,我没有找到任何具体的答案。因为我不想在查询中写出4000个名字。有没有一般的查询来快速做到这一点。我认为使用信息架构表获取数据是可能的,但我不知道如何。
我知道如何选择表格:
SELECT DISTINCT TABLE_NAME
FROM INFORMATION_SCHEMA.COLUMNS
WHERE COLUMN_NAME IN ('Product')
AND TABLE_SCHEMA='YourDatabase';
但我不知道查询从中获取数据。 谢谢。
答案 0 :(得分:0)
你有php标签。所以我认为你可以轻松地在php中获取数据。
try {
$dbh = new PDO('mysql:host=localhost;dbname=db', 'user', 'password');
//Get all table name
$sth = $dbh->query("SELECT DISTINCT TABLE_NAME FROM INFORMATION_SCHEMA.COLUMNS WHERE COLUMN_NAME IN ('name') AND TABLE_SCHEMA='ai'");
// build your query string
$query = ' ';
foreach ($sth->fetchAll() as $table) {
$query .= "SELECT DISTINCT name from $table[0] UNION ";
}
$queryWithoutLastWord = preg_replace('/\W\w+\s*(\W*)$/', '$1', $query);
// execute your final query
$sth1 = $dbh->query($queryWithoutLastWord);
// Now build your expected array
$names = [];
foreach ($sth1->fetchAll() as $name) {
$names[] = $name['name'];
}
print_r($names);
$dbh = null;
} catch (PDOException $e) {
print "Error!: " . $e->getMessage() . "<br/>";
die();
}