Mysql 使用常规数据从表更新表

Mysql 使用常规数据从表更新表,mysql,sql,Mysql,Sql,在我的MySQL数据库(5.X)中,我有一个存储所有其他表信息的表(下一个id等)。 可以这样更新此表吗? 在我的表“tables”中有一个字段“tableName”和“nextId”。我想做一些类似的事情: UPDATE tables SET nextId = (SELECT MAX(id) FROM tables.tableName); 编辑: 我现在知道不可能动态确定表名。 但是,我可以为每一行做吗?我可以轻松地让所有查询自动生成。 这样的话: UPDATE tables SET nex

在我的MySQL数据库(5.X)中,我有一个存储所有其他表信息的表(下一个id等)。 可以这样更新此表吗? 在我的表“tables”中有一个字段“tableName”和“nextId”。我想做一些类似的事情:

UPDATE tables SET nextId = (SELECT MAX(id) FROM tables.tableName);
编辑: 我现在知道不可能动态确定表名。 但是,我可以为每一行做吗?我可以轻松地让所有查询自动生成。 这样的话:

UPDATE tables SET nextId = (SELECT MAX(id) FROM tableX);

我将让此查询为我的表格中的每一行生成。

我可以让查询为每一行生成,而不是在Excel中使用一些简单的VBA进行一个大型查询:

Sub generate()
    For i = 1 To 107
        Cells(i, 3) = "update tables set nextId = (select max(id) from " & Cells(i, 2) & ") + 1 where soort = '" & Cells(i, 2) & "';"
    Next i
End Sub
这导致了107个查询,如下所示:

update tables set nextId = (select max(id) from table_name) + 1 where tableName = 'table_name';

不,不能在查询中使用列值填充表名。表名总是按字面意思取。您可以通过在存储过程中使用动态SQL,使用
PREPARE
为每行创建不同的
UPDATE
查询来实现。为什么您需要自己的这些表?MySQL在
信息\u模式
数据库中已经有了元数据表。但是你为什么要这样做?!?这似乎是一个非常奇怪的想法。我尝试这样做是因为我不小心在没有where子句的情况下对tables表运行了更新。这意味着我所有的nextid都错了。我必须手动检查所有表中的下一个id,而不是一个查询。