Шаблон антисоединения - это подход, который я обычно использую. Это внешнее объединение, чтобы вернуть все строки из query_1 вместе с соответствующими строками из query_2, а затем отфильтровывать все строки, которые имели совпадение ... оставляя только строки из query_1, которые не имели соответствия. Например:
SELECT q1.*
FROM ( query_1 ) q1
LEFT
JOIN ( query_2 ) q2
ON q2.id = q1.id
WHERE q2.id IS NULL
Чтобы эмулировать оператор набора MINUS
, нам понадобится предикат соединения для сравнения всех столбцов, возвращаемых q1 и q2, также соответствующих значениям NULL.
ON q1.col1 <=> q2.col2
AND q1.col2 <=> q2.col2
AND q1.col3 <=> q2.col3
AND ...
Кроме того, чтобы полностью эмулировать операцию MINUS
, нам также необходимо удалить повторяющиеся строки, возвращаемые q1. Для этого достаточно добавить ключевое слово DISTINCT
.
У меня была эта проблема с моим R300. Вот то, что я сделал для фиксации его:
, я надеюсь, что это работает на Вас!