我需要做的是一次检索数据库中所有表的最大主键?也就是说,如果我执行以下 2 个查询,我的结果将是这样的:
SHOW TABLES FROM DATABASE_NAME
SELECT MAX(PRIMARY_KEY) AS maxId FROM TABLE
那是
(first column = TableName , second column = MAX(PK) Of that table)
请原谅我做错了什么。我只是不想写 80 个查询,因为我的数据库有 80 个表。
如果(且仅当)您的主键是AUTO INCREMENT
变量,您可以这样做:
SELECT TABLE_NAME, AUTO_INCREMENT
FROM information_schema.TABLES
WHERE TABLE_SCHEMA = 'mydb'
在选择检索该信息的方法以及您将如何处理时,请注意以下情况:
AUTO_INCREMENT 值存储在内存中,因此在服务器重新启动后,AUTO_INCREMENT 值重置为:
SELECT MAX(ai_col) FROM table_name FOR UPDATE;
如果数据库缺少 FK,这可能会破坏事情,例如,您删除了一些引用其他表的行。你最终会重用相同的 id。
SELECT table_schema, table_name, column_name, data_type, extra
FROM `columns`
WHERE table_schema = 'mydb'
AND extra LIKE '%auto_increment%'
可以选择JOIN
使用 Alnitak 的答案。