从多个表中获取所有列的最大值

Get maximum value across all columns from multiple tables

如何获取我的数据库 (mysql) 中所有 table 的最大主键?

我有以下查询来检索 all columns from all tables 主键 并且是来自 my_dbINT 数据类型数据库

SELECT 
    table_name, column_name
FROM
    INFORMATION_SCHEMA.COLUMNS
WHERE
    table_schema = 'my_db'
        AND column_key = 'PRI'
        AND data_type LIKE '%int%'
ORDER BY TABLE_NAME , COLUMN_NAME

但现在,我坚持要从所有 table 的所有这些列中获取最大值。有没有办法做到这一点?我的预期输出将是所有这些列中最大的单个整数。

谢谢!

假设所有列都具有兼容类型(您正在检查的类型),那么您可以使用元数据构建查询:

select group_concat(replace(replace('select max([column_name]) from [table_name]', '[column_name]', column_name), '[table_name]', table_name)
                    separator '\nunion all\n')
from INFORMATION_SCHEMA.COLUMNS
where table_schema = 'my_db' and
     column_key = 'PRI' and
     data_type LIKE '%int%'
order by TABLE_NAME, COLUMN_NAME;

我只想复制查询并运行它。但是您可以通过为结果字符串分配一个变量并使用 prepare/exec.

来进一步自动化该过程