За исключением того, что он выходит в 2 других таблицах

Мне нужно получить все значения из таблицы product, за исключением того, что они выходят в 2 других таблицах product. Является ли этот запрос приемлемым, используя 2 ИСКЛЮЧЕНИЯ? Должно ли это быть сделано по-другому.

CREATE table missing_values
AS
select post
from product
EXCEPT
select post
from product_table_a
EXCEPT
select post
from product_table_b
;

2 ответа

Решение

A - B - C такой же как A - (B + c):

SELECT post
FROM product
EXCEPT
(
  SELECT post
  FROM product_table_a
  UNION ALL
  SELECT post
  FROM product_table_b
) AS sum;

Как говорит MatBailie, вы должны попробовать свой запрос и посмотреть, даст ли он желаемый результат.

Но если это не сработает, вы можете решить это с двойным not exists

Это значит p1 не найден ни в p2 или же p3,

SELECT post
FROM product p1
WHERE not exists (SELECT p2.post                       
                  FROM product_table_a p2
                  WHERE p1.post = p2.post)
AND   not exists (SELECT p3.post                       
                  FROM product_table_b p3
                  WHERE p1.post = p3.post)

Также это, вероятно, более эффективный способ

SELECT post
FROM product p1
left join product_table_a p2
   on p1.post = p2.post
left join product_table_b p3
   on p1.post = p3.post
WHERE p2.post is null
and   p3.post is null
Другие вопросы по тегам