每组右表的左外连接?

Posted

技术标签:

【中文标题】每组右表的左外连接?【英文标题】:Left Outer Join With Per Group of Right table? 【发布时间】:2016-03-11 22:09:20 【问题描述】:

我有两张桌子,LR

我想在LR 中的每组行之间有一个Left Outer join

更清楚的是,左表中的所有行,必须在每组右行的结果集中。

SQL 中最好的查询是什么?

【问题讨论】:

到目前为止你累了什么? 我在左表中的行,必须与右行中的每个组耦合。我的左表是一个月中的几天,右表是员工的存在。我想展示每一天,发生了什么! 【参考方案1】:

我通过CROSS JOIN 运营商解决它。

表 L:

表 R:

我的查询: 声明@userid int 设置@userid = null

 SELECT T.Id, T.Name,T.UserId,R.Val
        FROM 
            (
            SELECT L.Id, L.Name,R.UserId
            FROM
            (SELECT DISTINCT UserId FROM R ) R 
            CROSS JOIN  L
            )T

            LEFT OUTER JOIN R
            ON (T.Id = R.DayId AND T.UserId = R.UserId)
            where @userid is null or T.userid=@userid

结果:

【讨论】:

以上是关于每组右表的左外连接?的主要内容,如果未能解决你的问题,请参考以下文章

左外连接与右外连接区别?

关于数据库的左外连接 右外连接的意思是啥

oracle 左外连接如果右表中有重复数据如何处理?

将涉及多个表的左外连接从 Informix 重写为 Oracle

内连接与左外链接的区别

MySQL--7种join连接