一次检索数据库中所有表的MAX主键值

时间:2013-03-01 13:54:10

标签: mysql database

我需要做的是检索数据库中所有表的最大主键一次?也就是说,我的结果就像是执行了以下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个表。

3 个答案:

答案 0 :(得分:12)

如果(且仅当)您的主键是AUTO INCREMENT变量,您可以执行此操作:

SELECT TABLE_NAME, AUTO_INCREMENT
FROM   information_schema.TABLES
WHERE  TABLE_SCHEMA = 'mydb'

答案 1 :(得分:0)

选择检索该信息的方法以及您将要使用的信息时,请注意以下情况:

AUTO_INCREMENT值存储在内存中,因此在服务器重新启动后,AUTO_INCREMENT值将重置为:

SELECT MAX(ai_col) FROM table_name FOR UPDATE;

如果数据库缺少FK,例如,您删除了一些引用其他表的行,这可能会破坏事情。您最终将通过重复使用相同的ID。

引用:https://dev.mysql.com/doc/refman/5.7/en/innodb-auto-increment-handling.html#innodb-auto-increment-initialization

答案 2 :(得分:0)

SELECT  table_schema, table_name, column_name, data_type, extra
    FROM  `columns`
    WHERE  table_schema = 'mydb'
      AND  extra LIKE '%auto_increment%' 

可选择 JOIN 这与 Alnitak 的回答。

相关问题