Получите максимальное значение по всем столбцам из нескольких таблиц - PullRequest
1 голос
/ 14 июля 2020

как мне получить максимальный первичный ключ всех таблиц в моей БД (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

, но теперь я застрял в получении максимальных значений из всех этих столбцов по всей таблице. Есть ли способ добиться этого? Моим ожидаемым результатом будет одно целое число, которое является наибольшим среди всех этих столбцов.

Спасибо!

1 Ответ

0 голосов
/ 14 июля 2020

Предполагая, что все столбцы имеют совместимый тип (который вы проверяете), вы можете построить запрос, используя метаданные:

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.

...