sqlsugar 分表查询别名如何定义 返回

SqlSugar
6 522
该叫什么 奋青 发布于3天前
悬赏:0 飞吻

 .SplitTable(query.BeginTime, query.EndTime)

现在生成的sql 是这种

select rowId as wId,columnName as cName,columnName1,columnName2

from

(
select rowId,columnName,columnName1,columnName2 from table_20220622 union all
select columnName,columnName1,columnName2 from table_20220623

) T


能否直接生成这样sql 别名定义

select wId,cName,columnName1,columnName2

from

(
select rowId as wId,columnName as cName,columnName1,columnName2 from table_20220622 union all
select columnName as cName,columnName1,columnName2 from table_20220623

) T

请问有办法实现这种吗

热忱回答6

  • 可以的  SplitTale(xx).Select(it=>Class(){ x=it.xxx })

    0 回复
  • @fate sta:这个写法我试过跟现在 这种方式生成的sql是一样的
                     var sql1=Db.Queryable<class>(x=>Rid=x.RowId)
                     .SplitTable(query.BeginTime, query.EndTime)

                     .Select(x=>rowId=x.wid)


                    var data = await Db.UnionAll(sq1)

                     .ToPageListAsync(index, size, total);
    这是我现在写的方式的 不知道是不是我写错了,可是生成的sql 还是这种


     SELECT COUNT(1) FROM (
    SELECT unionTable.* FROM  (
    SELECT  "ROWID" AS "RID" FROM  
    (
    SELECT "ROWID" FROM  "TABLE_20220623"  UNION ALL
    SELECT "ROWID" FROM "TABLE_20220622" 
    ) unionTable 

    ) unionTable  
    ) CountTable 

    能否在生成 sql的时候将 列名直接定成别名

    SELECT "ROWID" AS "RID" FROM  "TABLE_20220623"  UNION ALL
    SELECT "ROWID" AS "RID" FROM "TABLE_20220622" 


    0 回复
  • @fate sta:大神  我描述下我的个人需求,现在使用的数据库是 orcacle,因为设计表的时候原来并没有设计 唯一Id,所以想用 oracle 自带的RowId来进行使用,可是这个RowId 不能使用UNION ALL 来进行连表,需要先把 RowId 在查询的时候 改变成别名 这样就可以用  UNION ALL 进行连表查询了,

    否则 在查询的时候 ORACLE会报错 ORA-01446: 无法使用 DISTINCT, GROUP BY 等子句从视图中选择 ROWID 或采样 ,

    所以才有了我上面对查询时候 字段定成别名 的需求

    0 回复
  • 文档分页,有手动处理ROWID的方法

    0 回复
  • @fate sta:大神 我找了一圈 在文档分页中没有找到有关于 ROWID 的手动处理方式

    0 回复
  • @fate sta:大神我 指的rowid 指的是 ORACLE 自带的 不是分页的这个 rownumber 请问有解吗
    图片.png

    图片.png



    0 回复