【问题标题】:sqlkata - Self Join; Add aliases while joiningsqlkata - 自加入;加入时添加别名
【发布时间】:2020-04-03 05:59:52
【问题描述】:

使用 SQL KATA 进行自联接的正确方法是什么?目前,我只能执行以下操作

var query1 = new Query("Users");
var query = new Query("Users")
    .Join(query1.As("a"), j => j.On("a.Name", "Users.ParentName"))
    .Where("Name", "Sami");

但这会生成以下查询

SELECT
*
FROM
[Users]
INNER JOIN (
    SELECT
    *
    FROM
    [Users]
) AS [a] ON ([a].[Name] = [Users].[ParentName])
WHERE
[Name] = 'Sami'

是否可以实现如下查询?

SELECT
*
FROM
[Users] [a]
INNER JOIN [Users] [b] ON ([a].[ParentName] = [b].[Name])
WHERE
[a].[Name] = 'Sami'

【问题讨论】:

    标签: sqlkata


    【解决方案1】:

    这里不需要创建一个单独的查询实例,就像其他任何表一样。 这里的关键是使用 table as alias 语法来指示 SqlKata 您正在使用不同的别名。

    var query = new Query("Users as a")
        .Join("Users as b", "a.ParentName", "b.Name")
        .Where("a.Name", "sami");
    

    这将生成以下 SQL:

    SELECT
      *
    FROM
      [Users] AS [a]
      INNER JOIN [Users] AS [b] ON [a].[ParentName] = [b].[Name]
    WHERE
      [a].[Name] = 'sami'
    

    直接在 Sqlkata 操场上查看以下示例 Self Join Example on SqlKata Playground

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-04-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-09-01
      • 1970-01-01
      • 2011-07-19
      • 2018-10-12
      相关资源
      最近更新 更多