📅  最后修改于: 2023-12-03 14:51:27.115000             🧑  作者: Mango
在MySQL中,我们可以使用以下SQL语句,在所有表中查找某一列:
SELECT TABLE_SCHEMA,TABLE_NAME,COLUMN_NAME
FROM INFORMATION_SCHEMA.COLUMNS
WHERE COLUMN_NAME = 'your_column_name';
上述语句将在当前数据库的所有表中查找名为 "your_column_name" 的列,并返回该列所在的表名和数据库名。
但是,如果您想要在所有数据库中查找某一列,可以更改SQL语句:
SELECT TABLE_SCHEMA,TABLE_NAME,COLUMN_NAME
FROM INFORMATION_SCHEMA.COLUMNS
WHERE COLUMN_NAME = 'your_column_name'
AND TABLE_SCHEMA != 'mysql'
AND TABLE_SCHEMA != 'information_schema';
上述语句将在所有数据库中查找名为 "your_column_name" 的列,并排除MySQL系统表和information_schema数据库。
以下是一个使用PHP PDO连接到MySQL并执行上述SQL查询的代码示例。可以将其用作参考或将其集成到自己的代码中。
try {
// 连接MySQL
$pdo = new PDO("mysql:host=localhost;dbname=your_database", "your_username", "your_password");
// 设置错误模式为异常
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
// 执行SQL查询
$stmt = $pdo->prepare("SELECT TABLE_SCHEMA,TABLE_NAME,COLUMN_NAME
FROM INFORMATION_SCHEMA.COLUMNS
WHERE COLUMN_NAME = :column_name
AND TABLE_SCHEMA != 'mysql'
AND TABLE_SCHEMA != 'information_schema'");
$stmt->bindParam(':column_name', $column_name);
$stmt->execute();
// 输出查询结果
while($row = $stmt->fetch(PDO::FETCH_ASSOC)) {
echo "列 " . $row['COLUMN_NAME'] . " 在表 " . $row['TABLE_NAME'] . " 中,数据库名为 " . $row['TABLE_SCHEMA'] . "<br>";
}
}
catch(PDOException $e) {
echo "连接失败: " . $e->getMessage();
}