c# - 除了匹配行之外,左外连接还返回空右侧

标签 c# mysql sql linq lambda

我正在尝试创建一个查询,该查询将返回两个表的左外连接,但对于每个匹配都会有一个额外的行。右侧额外的行为空。这是一个例子:

Join

这是我当前使用 linq 的查询(也赞赏 SQL 中的响应):

context.Code
       .GroupJoin(
           context.SubCode,
           code => code.CodeID,
           sub => sub.CodeID,
           (code, sub) => new
           {
               Codes = code,
               SubCodes = sub
           })
       .SelectMany(sub => sub.SubCodes.DefaultIfEmpty(),
           (code, sub) => new { Codes = code.Codes, SubCodes = sub })
       .ToList();

编辑(解决方案?):

SELECT Codes.ID, Codes.Code, SubCodes.SubCode
FROM Codes
INNER JOIN SubCodes
ON Codes.ID = SubCodes.CodeID
UNION
SELECT Codes.ID, Codes.Code, NULL
FROM Codes
ORDER BY Codes.ID

最佳答案

这是执行您想要的操作的 SQL:

(select c.id, c.code, sc.subCode
 from codes c join
      subcodes sc
      on c.id = sc.codeid
) union all
(select c.id, c.code, NULL
 from codes c
)

关于c# - 除了匹配行之外,左外连接还返回空右侧,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21068339/

相关文章:

sql - sql中的分组问题

mysql - 关于group by的问题

sql - TSQL 伪随机文本生成器

c# - 如何在 C# 中用正则表达式替换模式

c# - 有什么方法可以更改 VSTO Outlook 插件中的边框/标题背景吗?

PHP/MYSQL 到 CSV 导出代码打印到屏幕而不是 CSV 文件

mysql - 当我在父表中加入结果时,它会影响一项不应受到影响的项目

c# - Xeon/nVidia Quadro 机器上的 WPF BitmapImage 创建速度极慢

c# - 在安装时更改 app.config

sql - 如何用日数据构造年数据?