有歧义的列名[ID] 返回

SqlSugar 沟通中
6 341
该叫什么 null 发布于1个月前
悬赏:0 飞吻

怎么样表达式多表查询取别名?


热忱回答6

  • null null VIP0
    1个月前

    在MySQL当中不会出现这样的情况,切换为达梦数据库会出现这样的错误

    0 回复
  • fate sta fate sta VIP0
    1个月前

    升级sqlsugar到最新试试,还有问题需要提供DEMO

    0 回复
  • null null VIP0
    1个月前

    @fate sta:语法上有啥办法避免吗?

    0 回复
  • null null VIP0
    1个月前

    @fate sta

        var query = _rep.AsQueryable()

                     .LeftJoin<TbLineLevel>((line, level) => line.Pid == level.Id )

                     .WhereIF(!string.IsNullOrWhiteSpace(input.Name), u => u.Name.Contains(input.Name.Trim()))

                     .Select((line, level) =>new TbLineInfoOutput

                     {

                         Id = line.Id,

                         Pid = (long)level.Pid,

                         LevelName = level.Level,

                     });


       /// <summary>

        /// XL等级

        /// </summary>

        [SugarTable("Tb_linelevel","XL等级")]

        public class TbLineLevel  : EntityBase

        {

            /// <summary>

            /// 关联tb_bureau的id,

            /// </summary>

            [SugarColumn(ColumnDescription = "关联tb_bureau的id,")]

            public long? Pid { get; set; }

            /// <summary>

            /// XL等级

            /// </summary>

            [SugarColumn(ColumnDescription = "XL等级")]

            public string? Level { get; set; }

        }


    [SugarTable("tb_lineinfo")]

    [Description("XL表,是GT表父类")]

    public class TbLineInfo : EntityBase

    {

        /// <summary>

        /// 父Id,默认是0

        /// </summary>

        public long Pid { get; set; }

        /// <summary>

        /// XL名称

        /// </summary>

        public string Name { get; set; }


    }

    生成的SQL语句是

    SELECT * FROM (SELECT  "LINE"."ID" AS "ID" , "LEVEL"."PID" AS "PID" , "LEVEL"."LEVEL" AS "LEVELNAME" ,ROW_NUMBER() OVER(ORDER BY Id Desc) AS RowIndex  FROM "TB_LINEINFO" "LINE" Left JOIN "TB_LINELEVEL" "LEVEL" ON (( "LINE"."PID" = "LEVEL"."ID" ) AND ( "LEVEL"."ISDELETE" = 0 ))   WHERE ( "LINE"."ISDELETE" = 0 )) T WHERE RowIndex BETWEEN 1 AND 20


    但是在达梦里边执行还是提示歧义

    4.png


    0 回复
  • null null VIP0
    1个月前

    @fate sta:版本已经是最新的了

    0 回复
  • null null VIP0
    1个月前

    已经解决

    0 回复