分表查询,使用查询过滤器,导航查询表别名错误 返回

SqlSugar 沟通中
3 410

使用查询过滤器:

=> db.QueryFilter.AddTableFilter<IDeletedFilter>(u => u.IsDelete == false);

表SysBizLog 按照

CreateTime 分表

查询

 _sysBizLogRep.AsQueryable()
    .WhereIF(!string.IsNullOrWhiteSpace(input.FeatureName), u =>
        SqlFunc.Contains(u.FeatureName, input.FeatureName))
    .WhereIF(!string.IsNullOrWhiteSpace(input.OperationName),
        u => SqlFunc.Contains(u.OperationName, input.OperationName))
    .WhereIF(input.LogTypeList != null && input.LogTypeList.Any(),
        u => input.LogTypeList.Contains(u.LogType.ToString()))
    .WhereIF(input.LogLevelList != null && input.LogLevelList.Any(),
        u => input.LogLevelList.Contains(u.LogLevel.ToString()))
    .SplitTable(input.StartTime, input.EndTime)
    .OrderBy(u => u.CreateTime, OrderByType.Desc)
    .Select<BizLogOut>(u => new BizLogOut
    {
        LogTypeName = u.LogTypeInfo.DictDataValue
    }, true);


生成sql异常

SELECT (SELECT [DictDataValue]
        FROM [V_SysDictData]
        WHERE DictTypeCode = 'biz_log_type'
          AND [u].[LogType] = [DictDataCode]) AS [LogTypeName],
       [LogType]                              AS [LogType],
       [LogLevel]                             AS [LogLevel],
       [FeatureName]                          AS [FeatureName],
       [OperationName]                        AS [OperationName],
       [LogContent]                           AS [LogContent],
       [CreateTime]                           AS [CreateTime]
FROM (SELECT [LogType],
             [LogLevel],
             [FeatureName],
             [OperationName],
             [LogContent],
             [CreateTime],
             [ElapsedMilliseconds],
             [UpdateTime],
             [CreateUserId],
             [UpdateUserId],
             [IsDelete],
             [OrderNo],
             [Rsv1],
             [Rsv2],
             [Rsv3],
             [Rsv4],
             [Rsv5],
             [Id]
      FROM [SysLogBiz_20260223]
      WHERE [CreateTime] >= CAST('2026-02-25 00:00:00.000' AS DATETIME)
        AND [CreateTime] <= CAST('2026-02-26 00:00:00.000' AS DATETIME)
        AND ([IsDelete] = 0)) unionTable
WHERE ([IsDelete] = 0)
ORDER BY [CreateTime] DESC;


表别名 unionTable 应该是 u

能否导航查询支持正确表别名


热忱回答3

  • 这个是固定的。

    0 回复
  • zhao_dch zhao_dch VIP0
    2026/2/25

    @fate stay night:当去掉过滤器,表别名unionTable就是正确的u 了,是否分表查询要去掉过滤器


    或者不使用导航查询表采用关联查询,能否直接支持导航查询呢,否则要很多关联

    SELECT [logTypeDic].[DictDataValue] AS [LogTypeName],
          [u].[LogType]                AS [LogType],
          [u].[LogLevel]               AS [LogLevel],
          [u].[FeatureName]            AS [FeatureName],
          [u].[OperationName]          AS [OperationName],
          [u].[LogContent]             AS [LogContent],
          [u].[CreateTime]             AS [CreateTime]
    FROM (SELECT *
         FROM (SELECT [LogType],
                      [LogLevel],
                      [FeatureName],
                      [OperationName],
                      [LogContent],
                      [CreateTime],
                      [ElapsedMilliseconds],
                      [UpdateTime],
                      [CreateUserId],
                      [UpdateUserId],
                      [IsDelete],
                      [OrderNo],
                      [Rsv1],
                      [Rsv2],
                      [Rsv3],
                      [Rsv4],
                      [Rsv5],
                      [Id]
               FROM [SysLogBiz_20260223]
               WHERE [CreateTime] >= CAST('2026-02-25 00:00:00.000' AS DATETIME)
                 AND [CreateTime] <= CAST('2026-02-26 00:00:00.000' AS DATETIME)
                 AND ([IsDelete] = 0)) unionTable) [u]
            Inner JOIN [V_SysDictData] [logTypeDic]
                       ON (([logTypeDic].[DictDataCode] = CAST([u].[LogType] AS NVARCHAR(MAX))) AND
                           ([logTypeDic].[DictTypeCode] = N'biz_log_type'))
    WHERE ([u].[IsDelete] = 0)
    ORDER BY [u].[CreateTime] DESC
    0 回复
  • 解决了吗,我这里只有一个表查询,就是选择不同的条件,就造成别名不一致,根本解决不了

    0 回复