SQL语句积累(1)

   平时写下的SQL,虽然不是很复杂,但是自己记忆力太差,此处总结之(不断追加中......):
        1)select u.id,u.name,u.mobile, sum(b.cost) as ucTotal,avg(b.cost) as ucAvg,count(*) as ucCount from user  u, book b where u.id = b.user_id and DATE_FORMAT(book_date,'%Y-%c') = '2008-8' group by b.user_id desc  order by sum(b.cost) desc limit 0,50;
         说明:sum(b.cost):求和,avg(b.cost):求平均值。
                 DATE_FORMAT(book_date,'%Y-%c'):格式化日期为'2008-8'这样的格式。
                 count(*)。。。group by b.user_id:按b.user_id分组,计算记录个数。
                 order by sum(b.cost) desc :按和值正序排行。
                 limit 0,50 :取全部记录排序后的第1到50条数据。

         注意:limit 0,50是在mysql中的用法,在sqlServer和Oracle中可以这样实现:

         SQL Server:
         从数据库表中的第M条记录开始取N条记录,利用Top关键字:注意如果Select语句中既有top,又有order by,则是从排序好的结果集中选择:
  SELECT Top N * FROM TestTable where id not in (SELECT Top (M - 1) id FROM TestTable Order by id)
         #FROM TestTable where id not in (SELECT Top (M + N - 1) id FROM TestTable Order by id)
        ( 也可得到子查询中的 max(id) ,然后主查询 where 用 id > 子.id )
        例如从表Sys_option(主键为sys_id)中从10条记录开始检索20条记录,语句如下:
        SELECT Top 10 * FROM Sys_option where sys_id not in ( SELECT TOP 20 sys_id FROM Sys_option order by sys_id)
        Oralce数据库:
        从数据库表中第M条记录开始检索N条记录
        SELECT * FROM (SELECT ROWNUM r,t1.* From 表名称 t1 where rownum < M + N) t2 where t2.r >= M
        例如从表Sys_option(主键为sys_id)中从10条记录还是检索20条记录,语句如下:
       SELECT * FROM (SELECT ROWNUM R,t1.* From Sys_option where rownum < 30 ) t2 Where t2.R >= 10

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值