1

我在我的项目中使用 SqlKata,有必要在嵌套连接的帮助下连接多个表。我希望看到类似的东西:

SELECT * FROM t1
LEFT JOIN (t2 LEFT JOIN t3 ON t3.id = t2.id) 
ON t2.id = t1.id

在 Join/LeftJoin/RigthJoin 方法中,我没有发现任何可以接受除联接或其他请求之外的任何内容的重载。

不想手动建立这样的连接,也许有人已经面临这样的问题?那太好了,我真的很感激一个提示。

4

1 回答 1

1

目前在 SqlKata 中无法定义 JOIN 优先级。

但是您可以通过使用子查询来获得相同的结果。

var query = new Query("t1")
    .LeftJoin(
        new Query("t2").LeftJoin("t3", "t3.id", "t2.id").As("tmp"),
       j => j.On( "tmp.id", "t1.id")
    );

此查询将产生以下 sql:

SELECT * FROM [t1] LEFT JOIN (
    SELECT * FROM [t2] LEFT JOIN [t3] ON [t3].[id] = [t2].[id]
) AS [tmp] ON ([tmp].[id] = [t1].[id])
于 2020-06-05T12:57:10.623 回答