ServiceStack.OrmLite 笔记10-group having 分页orderby等

group having 分页等

var ev = OrmLiteConfig.DialectProvider.SqlExpression();


group的使用
同sql一样,注意group分组的字段要在select里

ev.Select(c => new { c.Birthday, c.Active }).Where(rn => rn.Birthday >= new DateTime(year, 1, 1) && rn.Birthday <= lastDay).GroupBy(rn => new { rn.Birthday,rn.Active});


having的使用

ev.Select(c => new { c.Birthday, c.Active }).Where(rn => rn.Birthday >= new DateTime(year, 1, 1) && rn.Birthday <= lastDay).GroupBy(rn => new { rn.Birthday, rn.Active }).Having(x=>Sql.Max(x.Rate)>5);


orderby 排序
一升一降 先降后升 ordered by Rate Descending and Name Ascending
ev.Where().OrderBy(rn => new { at = Sql.Desc(rn.Rate), rn.Name })
也可以用这个OrderByDescending


Limit 分页
其实就是skip 然后take
ev.Limit(5); 默认是take 即top 5
ev.Limit(0, 4);// first page, page size=4;
ev.Limit(4, 4);// second page
ev.Limit().OrderBy(); // clear limit, clear orde

 ToCountStatement 总数
  var expr = db.From<LetterFrequency>() .Join<LetterFrequency, LetterStat>() .Where<LetterStat>(x => x.Id > 0);

var rscount= expr.ToCountStatement();//获取expr表达式结果的总数


 ev.SelectDistinct(r => r.City);
 ev.Select(r => Sql.As(Sql.Max(r.Birthday), "Birthday")); //列别名Birthday
 var r2 = db.Scalar<Author, DateTime>(e => Sql.Max(e.Birthday));Author表 DateTime类型

联接
LeftJoin

db.Column < string > ( db.From < TableA > ()
.LeftJoin < TableB >((a, b) => a.Id == b.Id)
.Where < TableB > (b => b.Id == null)
.Select(a => a.Name));

Join

db.From < TableA > ()
.Join < TableB > ()
.OrderBy(x => x.Id);

CrossJoin

db.From < CrossJoinTableA > ()
.CrossJoin < CrossJoinTableB >()
.OrderBy < CrossJoinTableA >(x => x.Id)
.ThenBy < CrossJoinTableB >(x => x.Id);




调试

db.GetLastSql().Print();

转载于:https://www.cnblogs.com/wang2650/p/5146050.html

在 PostgreSQL 中,GROUP BY 语句和 SELECT 语句可以一起使用来对相同的数据进行分组GROUP BY 通常放在 WHERE 子句之后和 ORDER BY 子句之前。 下面是 GROUP BY 与 ORDER BY 一起使用的基本语法: SELECT column-list FROM table_name WHERE [ conditions ] GROUP BY column1, column2....columnN ORDER BY column1, column2....columnN 这个语法允许你按照指定的列对结果进行分组,然后按照指定的列对分组结果进行排序。 需要注意的是,如果一个查询中使用了分组函数,那么任何不在分组函数中的列或表达式都必须在 GROUP BY 子句中出现,否则会出错。例如,如果在一个查询中使用了 SUM 函数来计算某列的总和,那么该列必须在 GROUP BY 子句中列出。否则,会出现错误。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* [PgSQL——学习笔记八: ORDER BY 子句:排序 & GROUP BY 语句:分组](https://blog.csdn.net/qq_41361442/article/details/124809777)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *3* [group by,havingorder by的用法详解](https://download.csdn.net/download/weixin_38543460/13699445)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值