从多个表中获取所有列的最大值
Get maximum value across all columns from multiple tables
如何获取我的数据库 (mysql) 中所有 table 的最大主键?
我有以下查询来检索 all columns from all tables
是 主键 并且是来自 my_db
的 INT 数据类型数据库
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
.
来进一步自动化该过程
如何获取我的数据库 (mysql) 中所有 table 的最大主键?
我有以下查询来检索 all columns from all tables
是 主键 并且是来自 my_db
的 INT 数据类型数据库
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
.