Прошло некоторое время с тех пор, как я играл в SQL-мире, и я мог бы использовать руку, пытающуюся решить эту проблему, поскольку мне еще не удалось разобраться, как это сделать ,INTERSECT на конкретном столбце или исключая столбец
У меня есть запрос, где я соединяющие много результатов, используя UNION
и удаление с помощью INTERSECT
, таких как:
(query 1
UNION
query 2
UNION
query 3)
INTERSECT
query 4
Моей проблема заключается в том, что у меня есть вычисляемый столбец в каждом из запросов 1-3, что обозначает, из какого запроса они пришли.
т.е.
col 1 | col 2 | col3 ....
q1 | A | B ....
q2 | A | D ....
q3 | E | D ....
Объединение этих хорошо, но когда я хочу, чтобы пересечь его с другим запросом я не могу найти способ, чтобы игнорировать этот столбец.
SO мой вопрос: Как я могу игнорировать столбец при пересечении или пересекать только указанный столбец?
ПРИМЕЧАНИЕ. Я мог бы включить q4 в каждый из других запросов, но это похоже на много ненужного дублирования.
В моем примере выше я упростил запросы для удобства чтения, но запросы содержат различные соединения, где пункты и подпункты запросы. и если я понимаю правильно, вы не можете использовать соединение после WHERE? – Calum
@Calum Вы можете попробовать подставить все запросы операции UNION с вашими реальными запросами. Результатом этой операции UNION является только производная таблица с 'q (col1, col2, col3)' как псевдоним. Затем вы можете выполнить «INNER JOIN» все равно. –
спасибо за совет, я внедрил его, используя метод INNER JOIN, и он работает, но в результате его читаемость пострадала. Поэтому для мешка нескольких повторяющихся строк я, вероятно, придерживаюсь лучшей читаемости – Calum