У меня есть две таблицы совместимости типов; A и B. Мне нужен SQL-запрос, который скажет мне, все ли элементы B также являются элементами A.

Пример 1:

     Table A
c1      | c2
--------+--------
"Hello" | "World"
"Hello" | "Kitty"
"Hello" | "pretty"

     Table B
c1      | c2
--------+--------
"Hello" | "World"
"Hello" | "Kitty"

expected: TRUE

Пример 2:

     Table A
c1      | c2
--------+--------
"Cat"   | 1
"Gato"  | 2
"Neko"  | 3

     Table B
c1      | c2
--------+--------
"Cat"   | 1
"Chat"  | 4

expected: FALSE
1
user3144693 26 Сен 2018 в 05:36

2 ответа

Лучший ответ

Этот запрос будет пытаться сопоставить все значения в таблице b с таблицей a, используя оба столбца c1 и c2.

Если они совпадают, результатом запроса будет equals true, в противном случае - false.

Рабочий пример: https://www.db-fiddle.com/f/d1N7ZaUSdogoTVCYefpdc1/1

SELECT COUNT(*) = 0 AS equal
FROM b
LEFT JOIN a USING (c1, c2)
WHERE a.c1 IS NULL;
0
fubar 26 Сен 2018 в 02:52

Одним подходом может быть объединение и левое соединение

select case when t2.col is not null then 'all elements of B are also elements of A.' else null end  from
(
select distinct c1 as col from A 
union
select distinct c2 from A
) t1
left join
(
select distinct c1 as col from B
union
select distinct c2 from B
) t2 on t1.col=t2.col
0
Zaynul Abadin Tuhin 26 Сен 2018 в 02:42