Select 来自多个 MySQL 表的数据

Select Data From Multiple MySQL Tables

我正在 MySQL 中搜索函数,以便从具有相似名称的多个 table 中搜索 Select 行。例如:Proyect_1、Proyect_2、Proyect_3

所有 table 都有相同的列名,table 之间的唯一区别是 table 名称。它以前缀 'proyect' 开头。问题是程序不知道有多少 'proyect' table,所以我无法像往常一样列出它们和 select 数据

我需要这样的东西:

SELECT mydata FROM TABLES LIKE 'Proyect_%';

有什么想法吗?谢谢!

如果你想搜索名称如 Proyect 的所有 table,你可以从 MySQL 信息模式中获取。

SELECT * FROM information_schema.tables 

从这里你可以通过table姓名

找到table

获取具有共同前缀的所有表

SHOW TABLES LIKE 'Proyect_%';

这将 return 行与前缀匹配的表格。示例:

Proyect_1
Proyect_2
Proyect_3

PHP 中,您可以创建一个 UNION 查询,该查询将选取由上述查询return编辑的表,

$sql = "SHOW TABLES LIKE 'Proyect_%'";
$result = $conn->query($sql);

$dataQuery = array();
$query = "";
if ($result->num_rows > 0) {
  // output data of each row
  while($row = $result->fetch_array(MYSQLI_NUM)) {
     $dataQuery[] = "SELECT * FROM {$row[0]}";
  }
  $query = implode(' UNION ', $dataQuery);
}

echo $query;