#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 мне нужно только добавить псевдоним к производной таблице.