分表查询,使用查询过滤器,导航查询表别名错误 返回
SqlSugar
沟通中
3
410
zhao_dch 发布于2026/2/25
悬赏:0 飞吻
使用查询过滤器:
=> 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)
-
fate stay night VIP0
2026/2/25这个是固定的。
0 回复 -
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] DESC0 回复 -
淡颜羡羡 VIP0
2周前解决了吗,我这里只有一个表查询,就是选择不同的条件,就造成别名不一致,根本解决不了
0 回复