Вы можете смоделировать minus
, который не поддерживается в MySql с NOT EXISTS
:
select t1.* from v1.A t1
where not exists (
select * from v2.A t2
where t2.col1 <=> t1.col1 and t2.col2 <=> t1.col2
)
Я использую NULL-безопасный оператор равенства <=>
вместо просто =
на всякий случай есть null
s, которые необходимо сравнить. Но если этот запрос не возвращает никаких результатов, это не означает, что 2 представления возвращают одинаковые строки, поскольку v1.A
может возвращать подмножество строк, возвращаемых v1.B
. Так что вам также нужно:
select t2.* from v2.A t2
where not exists (
select * from v1.A t1
where t2.col1 <=> t1.col1 and t2.col2 <=> t1.col2
)
и, возможно, лучше UNION ALL
из 2 запросов, чтобы быть уверенным:
select 1 from_view, t1.* from v1.A t1
where not exists (
select * from v2.A t2
where t2.col1 <=> t1.col1 and t2.col2 <=> t1.col2
)
union all
select 2 from_view, t2.* from v2.A t2
where not exists (
select * from v1.A t1
where t2.col1 <=> t1.col1 and t2.col2 <=> t1.col2
)