Sql循环通过数据库表

时间:2016-02-02 14:07:28

标签: mysql sql

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

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

+--------+-------------+
| NextHi | TableName   |
+--------+-------------+
| 43     | Page        |
+--------+-------------+
| 32     | User        |
+--------+-------------+

所以在列#34; TableName"是其他表的名称。

每个其他表都有列" Id"

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

  1. 表名
  2. MaxID - 表格
  3. 来自" Connections"的NextHi值当前表的表格
  4. 所以结果应该是这样的:

    +-----------+-------------+-------+
    | TableName | NextHi      | MaxId |
    +-----------+-------------+-------+
    | Page      | 43          | 435   |
    +-----------+-------------+-------+
    | User      | 32          | 768   |
    +-----------+-------------+-------+
    

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

    (
      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"
    )
    

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

    编辑:

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

2 个答案:

答案 0 :(得分:2)

handler404

编辑:发布后我看到@BryanT在我测试时已经对此进行了评论。

答案 1 :(得分:0)

您需要一个名为“动态SQL”的功能,这在MySQL中不受支持,但是it can be done

您需要编写一个查询,通过查询Connections生成一个有效的SQL语句,然后执行该语句。