Как найти в бд таблицу, которая одновременно содержит два столбца с разными известными нам наименованиями

Вот существует запрос, который позволяет найти в базе данных таблицу, которая содержит столбец с определенным наименованием:

SELECT TABLE_SCHEMA,  TABLE_NAME
FROM INFORMATION_SCHEMA.COLUMNS
WHERE COLUMN_NAME LIKE '%А%'

А как составить запрос таким образом, чтобы мы могли найти таблицу, которая в себе содержит столбец с наименованием "А", а также столбец с наименованием "В". То есть, например, есть таблица №1 со столбцами: А, В, С А есть таблица №2 со столбцами: А, D, E Нам надо составить запрос, чтобы отобрать только таблицу № 1


Ответы (3 шт):

Автор решения: Герман Борисов
SELECT TABLE_SCHEMA, TABLE_NAME
FROM INFORMATION_SCHEMA.COLUMNS
WHERE COLUMN_NAME LIKE '%А%' -- Условие для первого столбца
  OR  COLUMN_NAME LIKE '%B%' -- Условие для второго столбца
GROUP BY TABLE_SCHEMA, TABLE_NAME
HAVING COUNT(*) = 2

Выбираем все таблицы, которые содержат хотя бы один из двух столбцов, для каждой считаем количество найденных строк, и оставляем те, для которых нашлось ровно 2.

→ Ссылка
Автор решения: AlexanderSt

Для MySql можно так:

SELECT t.table_name FROM information_schema.Tables t JOIN information_schema.Columns c ON t.table_name = c.table_name
WHERE t.table_schema = 'my_schema' AND c.column_name='A'
INTERSECT 
SELECT t.table_name FROM information_schema.Tables t JOIN information_schema.Columns c ON t.table_name = c.table_name
WHERE t.table_schema = 'my_schema' AND c.column_name='B'

без изысков, в лоб

→ Ссылка
Автор решения: user659233

Друзья, благодарю всех за ваши ответы, заинтересованность и участие. У меня получилось добиться нужного результата с помощью вот такого запроса:

-- Таблицы с колонками, содержащими букву 'A'
WITH TablesWithA AS (
    SELECT DISTINCT TABLE_NAME
    FROM INFORMATION_SCHEMA.COLUMNS
    WHERE COLUMN_NAME LIKE '%А%'
),
-- Таблицы с колонками, содержащими букву 'B'
TablesWithB AS (
    SELECT DISTINCT TABLE_NAME
    FROM INFORMATION_SCHEMA.COLUMNS
    WHERE COLUMN_NAME LIKE '%В%'
)
-- INNER JOIN между двумя этими выборками
SELECT  a.TABLE_NAME AS TableWithA
b.TABLE_NAME AS TableWithB
FROM TablesWithA a
INNER JOIN TablesWithB b ON a.TABLE_NAME = b.TABLE_NAME; 
→ Ссылка