SQL Full Outer Join并组合两列

时间:2016-10-10 09:16:59

标签: sql ms-access join

我有以下两个表:

表A:

function setTime() {
    var timeUntil = countdown(Date.now(), new Date(2016, 12, 3, 18, 0, 0, 0));

    document.getElementById('counter-text').textContent = timeUntil;
}

setInterval(setTime, 200);

表B:

UserID      PermissionTableA
UserA       PermissionA
UserB       PermissionA
UserC       PermissionB
UserD       PermissionB

这两个表应通过ID连接,权限应合并为一个列,如下所示:

解决方案:

UserID      PermissionTableB    
UserA       PermissionC     
UserA       PermissionD     
UserB       PermissionC     
UserB       PermissionD 

我当前的解决方案,使用完全外连接,如下所示:

UserID      Permission      
UserA       PermissionC     
UserA       PermissionD     
UserA       PermissionA     
UserB       PermissionC     
UserB       PermissionD     
UserB       PermissionA 

是否可以将两个列合并为一个,类似于上面的解决方案表和SQL查询(使用MS Access)。

提前致谢。

1 个答案:

答案 0 :(得分:1)

您不是在寻找联盟:-)联接会合并记录。你所追求的是两个查询结果的结合。

select UserID, PermissionTableA as Permission
from TableA
UNION 
select UserID, PermissionTableB
from TableB
where UserID in (select UserID from TableA)
order by UserID, Permission;

更新:您也可以将您的外部联接与NZ一起使用。对不起,我花了一些时间来查看查询应该做什么。

select UserId, NZ(PermissionTableA, PermissionTableB) as Permission
from ...