Oracle、Mysql分页 排序

Oracle分页  排序

 

数据库在项目开发中主要承担存储的任务,可以根据查询条件查询想要查询内容。以下是普通的排序查询:

with t as
(
select '北京' name from dual union all
select '天津' from dual union all
select '成都' from dual union all
select '重庆' from dual
)
select name from t order by name ;

 

 可以通过以下代码进行会话修改:

ALTER SESSION SET NLS_SORT='SCHINESE_PINYIN_M';--拼音 
ALTER SESSION SET NLS_SORT='SCHINESE_STROKE_M';--按照笔划(第一顺序)、部首(第二顺序)排序
ALTER SESSION SET NLS_SORT='SCHINESE_RADICAL_M';--按照部首(第一顺序)、笔划(第二顺序)排序 

 

 或者直接执行以下代码块,查看显示结果

拼音 

SELECT name FROM t ORDER BY NLSSORT(name,'NLS_SORT = SCHINESE_PINYIN_M')

 
笔划 

SELECT name FROM t ORDER BY NLSSORT(name,'NLS_SORT = SCHINESE_STROKE_M') 

 

 

部首 

SELECT name FROM t ORDER BY NLSSORT(name,'NLS_SORT = SCHINESE_RADICAL_M')

 

以下是排序在分页查询中的应用:

*注意*:把表名(INFO),排序字段(name)更改为您要用的表和字段名

1:

select *
  from (select A.*, rownum r
          from (select *
                  from INFO ti
                 order by nlssort(ti.name,
                                  'NLS_SORT=SCHINESE_PINYIN_M')) A
         where rownum <= 20) B
 where r > 10;

2:

SELECT *
  FROM (SELECT A.*, rownum r
          FROM (select *
                  from INFO ti
                 order by nlssort(ti.name,
                                  'NLS_SORT=SCHINESE_STROKE_M')) A
         WHERE rownum <= 20) B
 WHERE r > 10; 

 

3:

SELECT *
  FROM (SELECT A.*, rownum r
          FROM (select *
                  from INFO ti
                 order by nlssort(ti.name,
                                  'NLS_SORT=SCHINESE_RADICAL_M')) A
         WHERE rownum <= 20) B
 WHERE r > 10;

 

 示例:

/*
查询条件为:
当日8点至前一天晚上8点
*/

select  
   to_date(to_char(sysdate,'yyyymmdd')||' 20:00:00','yyyy-mm-dd hh24:mi:ss'),
   to_date(to_char(trunc(sysdate-1),'yyyymmdd')||' 08:00:00','yyyy-mm-dd hh24:mi:ss')
 from dual;

 
select  to_char(trunc(sysdate-2),'yyyymmdd')from dual

 

Mysql

select * from 
(
   select a.*,rownum rn from
	(
		select * from testtable
	)a where rn<=6
)where rn >3

select * from limit 3,6
SELECT * FROM aricles WHERE category_id = 123 ORDER BY id LIMIT 10000, 10

select b.* from (
	select a.*,rownum rn form 
	(
		select * from testtable
	) a where rn <=6
) b where rn >3
 

 

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值