Сравнение нескольких таблиц в mysql

#mysql #sql #comparison

#mysql #sql #сравнение

Вопрос:

У меня есть 4 таблицы с одинаковой структурой. Эти 4 таблицы генерируются из другой, основной таблицы.

  • Основная таблица -> A (10 000 строк)
    • таблица 1 -> a1 (2000 строк)
    • таблица 2 -> a2 (3 000 строк)
    • таблица 3 -> a3 (4 000 строк)
    • таблица 4 -> a4 (1000 строк)

Предполагается, что 4 сгенерированные таблицы не пересекаются, а их сумма равна таблице A.

Но мне нужно это подтвердить.

Мой вопрос: как я сравниваю эти 4 таблицы, чтобы узнать, есть ли у них какой-либо общий идентификатор?

Я знаю, что могу создать множество запросов для внутреннего соединения a1 с a2, a1 с a3 и так далее.

Но я думаю, что это должен быть другой лучший способ.

Комментарии:

1. что не так с написанием внутреннего соединения по идентификатору между всеми таблицами?

2. потому что внутреннее соединение находит все идентификаторы, которые являются общими для всех четырех таблиц. Но я хочу не этого. Я хочу знать, отображается ли конкретный идентификатор более чем в одной таблице.

Ответ №1:

Я бы просто union all собрал все идентификаторы из каждой таблицы, group by каждого, и проверил, есть ли у кого-либо более одного

 select count(*) from (
select id from table1 union all
select id from table2 union all
select id from table3 union all
select id from table4) group by id having count(*)>1
  

Если какой-либо идентификатор встречается более одного раза, он будет отображаться в результатах этого запроса.

Комментарии:

1. Спасибо! это работает очень хорошо, и это просто. для работы с mysql мне нужно только добавить псевдоним к производной таблице.