Равенство множеств в Sql - PullRequest
0 голосов
/ 13 марта 2020

Предположим, у меня есть 2 запроса A и B.

Запрос A возвращает столбец значений. Запрос B также возвращает столбец значений

Как проверить, что набор значений, возвращаемых из запроса A, равен набору значений, возвращаемых из запроса B?

I ' мы пробовали:

[запрос A] (выберите ... из ...) пересекаются [запрос B] (выберите .. из ..) = [запрос B] (выберите .. из ..),

плюс наоборот. Но я получаю

ошибку: более одной строки, возвращенной подзапросом, используемым в качестве выражения.

Я предполагаю, что это потому, что мне не разрешено проверять если 2 столбца равны, я могу проверить только значения atomi c?

1 Ответ

1 голос
/ 13 марта 2020

Если значений не очень много, вы можете использовать массивы:

select (ar_a = ar_b)
from (select string_agg(val order by val) as ar_a from a) cross join
     (select string_agg(val order by val) as ar_b from b);

Еще один способ SQLi sh - это полное соединение:

select (count(*) = count(a.val) and count(a.val) = count(b.val))
from a full join
     b
     on a.val = b.val;

Примечание. Это предполагает что значения различны.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...