SQL 比较整个数据集



>我有两组数据,我想比较与特定 usr id 相关的整个数据。如果此数据不完全匹配,则给我一个 null。

下面我应该得到 user_id = null,因为并非列访问中的所有数据都相同

set a
user_id     | access 
1001        | hotel
1001        | spa
1001        | gym
set b
user_id     | access 
1001        | hotel
1001        | spa
1001        | pool

在下面的情况下,我应该得到 user_id = 1001,因为列访问中的所有数据都是相同的

set a
user_id     | access 
1001        | hotel
1001        | spa
1001        | gym
set b
user_id     | access 
1001        | hotel
1001        | spa
1001        | gym

SQL 查询应该是什么样子才能获得这种效果? 我在甲骨文数据库工作。

如果您有两个单独的表,并且希望用户完全相同,那么listagg()是一个简单的解决方案:

select a.user_id
from (select user_id, listagg(access, ',') within group (order by access) as accesses
from a
group by user_id
) a join
(select user_id, listagg(access, ',') within group (order by access) as accesses
from b
group by user_id
) b 
on a.user_id = b.user_id and a.accesses = b.accesses;

相关内容

  • 没有找到相关文章