Метод полного соединения также работает для сравнения более двух таблиц.
Однако MySQL не поддерживает его, поэтому вы можете go для union all
:
select
id,
name,
price,
max(who = 't1') is_in_table1,
max(who = 't2') is_in_table2,
max(who = 't3') is_in_table3
from (
select id, name, price, 't1' who from table1
union all select id, name, price, 't2' who from table2
union all select id, name, price, 't3' who from table3
) t
group by id, name, price
Это дает вам одну строку для каждой отдельной строки, доступной в исходных трех таблицах с 3 логическими флагами, указывающими, была ли эта строка найдена в каждой таблице.