Sql循环通过数据库表

car*_*ics 5 mysql sql

在我的数据库中,我有20个表.

其中一个名为"Connections"的表包含两列"TableName"和"NextHi"

+--------+-------------+
| NextHi | TableName   |
+--------+-------------+
| 43     | Page        |
+--------+-------------+
| 32     | User        |
+--------+-------------+
Run Code Online (Sandbox Code Playgroud)

所以在"TableName"列中是其他表的名称.

彼此表有列"Id"

我需要的是脚本将循环通过数据库中的所有表,前面的表返回一行3列:

  1. 表名
  2. MaxID - 表格
  3. 当前表的"连接"表中的NextHi值

所以结果应该是这样的:

+-----------+-------------+-------+
| TableName | NextHi      | MaxId |
+-----------+-------------+-------+
| Page      | 43          | 435   |
+-----------+-------------+-------+
| User      | 32          | 768   |
+-----------+-------------+-------+
Run Code Online (Sandbox Code Playgroud)

我有脚本,它返回给我,但它有每个表的选择,表名称是硬编码的:

(
  SELECT
    "User" as `TableName`,
    `Connections`.`NextHi`,
    (SELECT MAX(`Id`) FROM `User`) as `MaxId`
  FROM `Connections`
  WHERE `Connections`.`TableName` = "User"
)
 UNION ALL (
  SELECT
    "Page" as `TableName`,
    `Connections`.`NextHi`,
    (SELECT MAX(`Id`) FROM `Page`) as `MaxId`
   FROM `Connections`
  WHERE `Connections`.`TableName` = "Page"
)
Run Code Online (Sandbox Code Playgroud)

但我需要在循环中将其作为一个选择

编辑:

更正:它实际上不需要只是一个选择,但它应该比我现在拥有的更简单