sql比较整个数据集
我有两组数据,我想比较与特定usr id相关的所有数据。如果这些数据不完全匹配,那么给我一个空值 下面我应该得到user_id=null,因为不是列访问中的所有数据都相同sql比较整个数据集,sql,oracle,compare,Sql,Oracle,Compare,我有两组数据,我想比较与特定usr id相关的所有数据。如果这些数据不完全匹配,那么给我一个空值 下面我应该得到user_id=null,因为不是列访问中的所有数据都相同 set a user_id | access 1001 | hotel 1001 | spa 1001 | gym set b user_id | access 1001 | hotel 1001 | spa 1001 |
set a
user_id | access
1001 | hotel
1001 | spa
1001 | gym
set b
user_id | access
1001 | hotel
1001 | spa
1001 | pool
set a
user_id | access
1001 | hotel
1001 | spa
1001 | gym
set b
user_id | access
1001 | hotel
1001 | spa
1001 | gym
在下面的例子中,我应该得到user_id=1001,因为列访问中的所有数据都是相同的
set a
user_id | access
1001 | hotel
1001 | spa
1001 | gym
set b
user_id | access
1001 | hotel
1001 | spa
1001 | pool
set a
user_id | access
1001 | hotel
1001 | spa
1001 | gym
set b
user_id | access
1001 | hotel
1001 | spa
1001 | gym
要获得这种效果,sql查询应该是什么样子?
我正在处理Oracle数据库。如果您有两个独立的表,并且希望用户完全相同,那么
listag()
是一个简单的解决方案:
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;
你试过什么?去读减号运算符。这张表是什么样子的?没有什么是SQL,它被称为“集合”。