Подтвердить что ты не робот

MySQL. Можно ли получить "разницу" двух результатов запроса?

Мне нужно объединить два результата запроса, как в объединении, но я хочу только сохранить разницу между этими двумя результатами. Возможно ли это?

Я в основном выбираю ВСЕ ресурсы в Query 1 и НЕ ДОПУСКАЕТ ресурсы в Query 2, я, очевидно, нуждаюсь в ресурсах ALLOWED в своем последнем результате.

В псевдокоде:

Query1 - Query2

Queryresult 1:

+-------+
|  id   |
+-------+
|   1   |
+-------+
|   2   |
+-------+
|   3   |
+-------+
|   4   |
+-------+
|   5   |
+-------+
|   6   |
+-------+

Queryresult 2:

+-------+
|  id   |
+-------+
|   2   |
+-------+
|   5   |
+-------+

Требуется:

+-------+
|  id   |
+-------+
|   1   |
+-------+
|   3   |
+-------+
|   4   |
+-------+
|   6   |
+-------+
4b9b3361

Ответ 1

Подобным образом, используя NOT IN:

SELECT id FROM queryOneTable
WHERE id NOT IN (
    SELECT id FROM queryTwoTable
)

Ответ 2

Я тестировал этот запрос в SQLExpress, так как у меня нет MySql. Я предполагаю, что это работает одинаково.

select x.id
from x 
left join y on x.id = y.id
where y.id is null

Ответ 3

Левый подход соединения более универсален, поскольку вы можете использовать его в двух таблицах (или любых двух наборах результатов запроса), где уникальность не состоит из одного идентификатора, а из комбинации нескольких значений столбца. Также считается лучшим SQL (или, по крайней мере, он был) для управления внешними соединениями (s.a. слева), поскольку он более эффективен, чем запись вложенных выборок.