📌  相关文章
📜  在所有表中查找一列mysql(1)

📅  最后修改于: 2023-12-03 14:51:27.115000             🧑  作者: Mango

在所有表中查找一列MySQL

在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();
}