INFORMATION_SCHEMA: это можно использовать для поиска столбцов с одинаковыми именами во всех таблицах одной базы данных - PullRequest
0 голосов
/ 15 октября 2019

Мне передали новую базу данных с более чем 500 таблицами. Могу ли я использовать INFORMATION_SCHEMA для выполнения запроса, чтобы вывести список всех таблиц и определить столбцы с одинаковыми именами во всех таблицах базы данных. По сути, я хочу иметь список всех таблиц и идентифицировать те таблицы, которые имеют обычно именуемый столбец.

1 Ответ

0 голосов
/ 15 октября 2019

Вы можете self-join системное представление information_schema.columns:

select 
    ta.column_name,
    ta.table_name,  
    tb.table_name,
from information_schema.columns ta
inner join information_schema.columns tb 
    on  ta.column_name = tb.column_name 
    and ta.table_name != tb.table_name
order by 
    ta.column_name, 
    ta.table_name,
    tb.table_name

Это даст вам все столбцы, которые используются в нескольких таблицах, с соответствующими именами таблиц.

Если вам нужны только имена таблиц, то:

select ta.table_name,  tb.table_name
from information_schema.columns ta
inner join information_schema.columns tb 
    on  ta.column_name = tb.column_name 
    and ta.table_name != tb.table_name
group by ta.table_name,  tb.table_name
order by ta.table_name,  tb.table_name

Примечание. Возможно, вы захотите добавить фильтр на table_schema, чтобы ограничить запрос схемами, используемыми в вашем приложении.

...