2013-03-01 42 views
3

我需要做的是一次检索我数据库中所有表的最大主键?也就是说,我的结果会是怎样,如果我执行以下2查询:一次检索数据库中所有表的MAX主键值

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

这听起来像是固定的经典案例。你真的想要完成什么? – Perception 2013-03-01 13:57:26

+0

@Perception我正在从Windows迁移到Linux,所以我需要这个。 – 2013-03-01 14:00:14

+0

从一个操作系统移动到另一个操作系统究竟与主键完全相关?你可能在这里重新发明了轮子,你能否给我们更多的细节,因为如果它看起来是这样 - 还有其他方法。 – 2013-03-01 14:02:08

回答

6

如果(且仅当)你的主键是AUTO INCREMENT变量,你可以这样做:

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

可以说我的数据库名称是“谢谢”比未知列'谢谢'in'子句' – 2013-03-01 14:08:41

+0

@FawadGhafoor你必须把表名引号 - 这是一个字符串。 – Alnitak 2013-03-01 14:11:43

+1

@FawadGhafoor对不起,我混淆了“表名”/“数据库名称” - 最后一个参数是_database name_,查询将为每个_table_返回一行。 – Alnitak 2013-03-01 14:20:49

相关问题