在我的数据库中,我有20个表。
其中一个表名为" Connections"包含两列" TableName"和" NextHi"
+--------+-------------+
| NextHi | TableName |
+--------+-------------+
| 43 | Page |
+--------+-------------+
| 32 | User |
+--------+-------------+
所以在列#34; TableName"是其他表的名称。
每个其他表都有列" Id"
我需要的是脚本,它将循环通过数据库中的所有表,前面的表返回一行3列:
所以结果应该是这样的:
+-----------+-------------+-------+
| 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"
)
但我需要在循环中将其作为一个选择
编辑:
更正:它并不只是一个选择,但它应该比我现在拥有的更简单
答案 0 :(得分:2)
handler404
编辑:发布后我看到@BryanT在我测试时已经对此进行了评论。
答案 1 :(得分:0)
您需要一个名为“动态SQL”的功能,这在MySQL中不受支持,但是it can be done。
您需要编写一个查询,通过查询Connections
生成一个有效的SQL语句,然后执行该语句。