oracle比较快的分页sql
方案1 适用于oracle9i以上!
select * from
(select row_number() over(order by sendid desc) rn,m.* from xxt_msgreceive m )
where rn <1010 and rn>=1000
方案2
SELECT * from (SELECT A.*, ROWNUM RN from (SELECT * from xxt_msg where sendstatus=1 order by msgid desc) A WHERE ROWNUM <= 4010)WHERE RN >=4000;
经测试,方案2速度要快
相关文档:
create PROCEDURE pagelist
@tablename nvarchar(50),
@fieldname nvarchar(50)='*',
@pagesize int output,--每页显示记录条数
@currentpage int output,--第几页
@orderid nvarchar(50),--主键排序
@sort int,--排序方式,1表示升序,0表示降序排列
......
感觉自己是比较笨的,学习过SQL语言,但是却分不太清楚DDL、DML、DCL语言,所以呢,今天就厚着脸皮问了老师,现在就自己目前的了解来总结一下。
1、DDL(DATA DEFINITION LANGUAGE)数据描述语言
DDL语句不会产生还原数据,所以删除的数据也是无法恢复的
CREATE - to ......
一个sql语句:一个表test有四个字段id,a,b,c,如果表中的记录有三个字段a,b,c都相等,则说明这条记录是相同的,求相同的记录的个数 。
select a,b,c,count(*) from (select c.a,c.b,c.c from test c) having count(*) >= 2 group by a,b,c
或者
select zdbh,tdzl,zdmj,count(*) from ecaadmin.zdsx group by zdbh ......
CREATE FUNCTION dbo.UF_GetInvoiceSerials( @bizCode VARCHAR(10))
RETURNS VARCHAR(100)
AS
BEGIN
DECLARE @ret AS VARCHAR(1000)
SELECT @ret=Coalesce(@ret + ', ','') +
CASE e.ID
  ......