SQL查询以选择所有匹配项中的一个结果

问题描述 投票:-1回答:1

我有两张桌子

表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

两个表中所有值都匹配的结果应为id:

1

尝试过此:

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

结果是

1
2
3
sql sqlite
1个回答
0
投票

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

© www.soinside.com 2019 - 2024. All rights reserved.