Sql запрос для выбора одного результата для всех совпадений - PullRequest
0 голосов
/ 17 июня 2020

У меня есть две таблицы

Таблица 1:

id|value
1|Tom
1|Lucy
2|Tom
2|Lucy
3|Tom
3|Lucy
3|Bard

Таблица 2:

id|value
1|Tom
1|Lucy
2|Tom
2|wrong
3|Tom
3|Lucy

Результат должен быть идентификатором, в котором все значения совпадают в обеих таблицах:

1

Пробовал:

select distinct a.id 
from table1 a 
join table2 b on a.id=b.id and a.value=b.value

результаты:

1
2
3

1 Ответ

3 голосов
/ 17 июня 2020
На ум приходит

INTERSECT. Или, может быть, FULL OUTER JOIN. MySQL не поддерживает ни то, ни другое.

Самый простой способ, который я могу придумать в MySQL:

select id
from table1
group by id
having (id, group_concat(value order by value)) in
(
  select id, group_concat(value order by value)
  from table2
  group by id
);

Демо: https://dbfiddle.uk/?rdbms=mysql_8.0&fiddle=768cc8fb2d01c2b5219a4d56d127d117

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