簡體   English   中英

Sql循環通過數據庫表

[英]Sql loop through Database tables

在我的數據庫中,我有20個表。

其中一個名為“Connections”的表包含兩列“TableName”和“NextHi”

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

所以在“TableName”列中是其他表的名稱。

彼此表有列“Id”

我需要的是腳本將循環通過數據庫中的所有表,前面的表返回一行3列:

  1. 表名
  2. MaxID - 表格
  3. 當前表的“連接”表中的NextHi值

所以結果應該是這樣的:

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

但我需要在循環中將其作為一個選擇

編輯:

更正:它實際上不需要只是一個選擇,但它應該比我現在擁有的更簡單

select NextHi, TableName, auto_increment from information_schema.tables,
Connections where table_schema='databaseName' and table_name=TableName;

編輯:發布后我看到@BryanT在測試時已經對此進行了評論。

您需要一個名為“動態SQL”的功能,這在MySQL中不受支持,但可以完成

您需要編寫一個查詢,通過查詢Connections生成一個有效的SQL語句,然后執行該語句。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM