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

rur96b6h  于 2021-07-26  发布在  Java
关注(0)|答案(1)|浏览(325)

如何获得数据库(mysql)中所有表的最大主键?
我要检索以下查询 all columns from all tables 是主键并且是来自的int数据类型 my_db 数据库

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

但现在,我很难从所有表的所有这些列中获得最大值。有办法做到这一点吗?我期望的输出是一个整数,它是所有这些列中最大的。
谢谢您!

z2acfund

z2acfund1#

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

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 .

相关问题