HQL НЕ поддерживает минус, но вы всегда можете использовать решение Patrick Tucci, которое отлично работает, когда ваш список избранных содержит только несколько полей. В моем случае я хотел найти различия между всей таблицей (30+ полей) и резервной копией, чтобы найти записи, которые были разными. Вот мое решение:
select <all-my-fields>, count(*)
from (
select <all-my-fields> from mytable
union all
select <all-the-fields> from mybackuptable
) merged_data
group by <all-my-fields>
having count(*) = 1
Теперь это не укомплектовать «минус», так как отдельные записи из mybackuptable будет отображаться в результате которой является то, что я хотел. Чтобы сделать это полным «минус» эквивалент Я добавил это:
select <all-my-fields>
from (
select max(source) source, <all-my-fields>, count(*)
from (
select 1 source, <all-my-fields> from mytable
union all
select 2, source, <all-the-fields> from mybackuptable
) merged_data
group by <all-my-fields>
having count(*) = 1
) minus_data
where source = 1
ЛЕВЫЕ РЕГИСТРИРУЙТЕСЬ один работает, но НЕ СУЩЕСТВУЕТ один раз не поддерживается энцефалопатией, кажется – Macopare
@Macopare Спасибо за обратную связь. Я не слишком часто использую «НЕ СУЩЕСТВУЮЩИЕ», поэтому я этого не знал. –