Oracle SQL精妙SQL语句批注

–行列转换 行转列DROP TABLE t,change,目的是将查询的结果提供给外层的SQL语句,查看与CLARK同部门的员工,–2,(效率最高),第一个参数指定返回的第一行在所有数据中的位置,第二个参数指定最多返回行数

澳门京葡网站 2

— LOOP中的COMMIT/ROLLBACK DROP TABLE t_loop PURGE; create TABLE
t_loop AS SELECT * FROM user_objects WHERE 1=2;

在DDL中使用子查询,能够将多少个子查询的结果集当做表快速创设出来。

SqlServer:

 

SQLServer数据库又分为 SQLServer2002和SQLServer二零零六。经常比较容易的诀借使经过TOP函数来兑现。如下: SELECT TOP 10 * FROM sql WHERE ( 
code NOT IN  (SELECT TOP 20 code  FROM TestTable  ORDER BY id)) ORDER BY ID 
那条语句,从理论上讲,整条语句的实行时间应当比子句的奉行时间长,但实际景况相反。因为,子句推行后回到的是20条记下,而整条语句仅重返10条语句,所以影响数据库响合时间最大的要素是物理I/O操作。而限定物理I /O操作此处的最实惠办法之一正是应用TOP关键词了。TOP关键词是SQL SE奥迪Q7VEEvoque中通过系统优化过的贰个用来领取前几条或前多少个比例数据的词。 以上语句的有三个沉重的后天不良,就是它包涵NOT IN字样,要换到用not exists来顶替not in,二者的举行成效实际上是从未有过分裂的。 
在上述分页算法中,影响我们询问速度的关键因素有两点:TOP和NOT IN。TOP能够提升大家的询问速度,而NOT IN会减慢大家的查询速度,所以要增进我们全数分页算法的进程,就要根本改变NOT IN,同别的办法来代表它。 大家精通,差不离任何字段,大家都足以由此max(字段State of Qatar或min(字段State of Qatar来领取某些字段中的最大或十分的小值,所以假诺这些字段不重复,那么就能够利用那个不另行的字段的max或min作为分水线,使其成为分页算法中分别每页的参照物。在这里处,大家得以用操作符“>”或“<”号来成功那几个义务。如:  
Select top 10 * from table1 where id>200  

于是就有了之类分页方案:  
select top 页大小 *  
from table1   
where id>  
(select max (id) from   
(select top ((页码-1)*页大小) id from table1 order by id) as T  
)       
order by id  
这种方法推行多少始终不曾大的降势,后劲照旧很足。特别对于数据量大的时候,该格局实行进程一点也不会下降。 
使用TOP必要主键必须独一,无法是一起主键。假如是一齐主键,则查询出的结果会乱序的。 
脚下SQLServer二零零五提供了三个row_number()函数。ROW_NUMBELX570(卡塔尔 就是生成三个梯次的行号,而他转移顺序的专门的学业,正是背后紧跟的
OVECR-V(ORAV4DE昂Cora BY ReportIDState of Qatar,此中ReportID能够是一道主键。上边,大家看看怎么具体运用那几个RowNo实行分页. SELECT TOP 10 *  FROM ( 
SELECT top 10 ROW_NUMBER() OVER (ORDER BY ReportID) AS RowNo 
FROM TABLE  ) AS A 
WHERE RowNo> ” + pageIndex*10 pageIndex正是我们须求多少的页数.  

 

Oracle:

— soft parse –java中的同等语句是 PreparedStatement.execute(卡塔尔(قطر‎ sql_1 :=
insert into t_hard(id) values(:id); FOR i IN 1 .. 1000 LOOP EXECUTE
IMMEDIATE sql_1 USING i; END LOOP; COMMIT; END;

排序函数能够将结果集遵照钦定的字段分组,然后组内再根据钦定的字段排序后对每组的

Oracle:

–1:无OCR-VDEENVISION BY排序的写法。(功能最高卡塔尔(قطر‎
–(经过测量检验,此措施花销低于,只嵌套一层,速度最快!固然查询的数据量再大,也差非常的少不受影响,速度依然!卡塔尔(قطر‎

SELECT *

  FROM (SELECT ROWNUM AS rowno, t.*

澳门京葡网站,          FROM emp
t

         WHERE hire_date BETWEEN TO_DATE (‘20060501’, ‘yyyymmdd’)

                             AND TO_DATE (‘20060731’, ‘yyyymmdd’)

           AND ROWNUM <= 20) table_alias

 WHERE table_alias.rowno >= 10;

–2:有OENVISIONDE奇骏 BY排序的写法。(效用最高State of Qatar
–(经过测量试验,此方法随着查询范围的恢宏,速度也会更慢哦!卡塔尔

SELECT *

  FROM (SELECT tt.*, ROWNUM AS rowno

          FROM (  SELECT
t.*

                    FROM emp
t

                   WHERE hire_date BETWEEN TO_DATE (‘20060501’, ‘yyyymmdd’)

                                       AND TO_DATE (‘20060731’, ‘yyyymmdd’)

                ORDER BY create_time DESC, emp_no) tt

         WHERE ROWNUM <= 20) table_alias

 WHERE table_alias.rowno >= 10;

 

 

=================================================================================

=======================垃圾但又有如很常用的分页写法==========================

=================================================================================

–3:无O科雷傲DEEvoque BY排序的写法。(建议选取方法1代替卡塔尔(قطر‎
–(此办法随着查询数据量的恢弘,速度会越来越慢哦!卡塔尔

SELECT *

  FROM (SELECT ROWNUM AS rowno, t.*

          FROM k_task
t

         WHERE flight_date BETWEEN TO_DATE (‘20060501’, ‘yyyymmdd’)

                               AND TO_DATE (‘20060731’, ‘yyyymmdd’)) table_alias

 WHERE table_alias.rowno <= 20 AND table_alias.rowno >= 10;

–TABLE_ALIAS.ROWNO  between 10 and
100;

–4:有OWranglerDETucson BY排序的写法.(建议利用情势2取代卡塔尔国
–(此办法随着查询范围的恢弘,速度会愈加慢哦!卡塔尔

SELECT *

  FROM (SELECT tt.*, ROWNUM AS rowno

          FROM ( 
SELECT *

                    FROM k_task
t

                   WHERE flight_date BETWEEN TO_DATE (‘20060501’, ‘yyyymmdd’)

                                         AND TO_DATE (‘20060531’, ‘yyyymmdd’)

                ORDER BY fact_up_time, flight_no) tt) table_alias

 WHERE table_alias.rowno BETWEEN 10 AND 20;

–5另类语法。(有O福特ExplorerDE宝马X3 BY写法)
–(语法风格与观念的SQL语法分化,不平价阅读与驾驭,为规范与统一标准,不推荐应用。State of Qatar
WITH partdata AS

     (

        SELECT ROWNUM AS rowno, tt.*

          FROM ( 
SELECT *

                    FROM k_task
t

                   WHERE flight_date BETWEEN TO_DATE (‘20060501’, ‘yyyymmdd’)

                                         AND TO_DATE (‘20060531’, ‘yyyymmdd’)

                ORDER BY fact_up_time, flight_no) tt

         WHERE ROWNUM <= 20)

SELECT *

  FROM partdata

 WHERE rowno >= 10;

 

–6另类语法 。(无O君越DETucson BY写法)

WITH partdata AS

     (

        SELECT ROWNUM AS rowno, t.*

          FROM k_task
t

         WHERE flight_date BETWEEN TO_DATE (‘20060501’, ‘yyyymmdd’)

                               AND TO_DATE (‘20060531’, ‘yyyymmdd’)

           AND ROWNUM <= 20)

SELECT *

  FROM partdata

 WHERE rowno >= 10;

 

 

 

yangtingkun分析:

  — from

Oracle的分页查询语句基本上能够依据本文给出的格式来举行套用。

分页查询格式:

SELECT *

  FROM (SELECT a.*, ROWNUM rn

          FROM (SELECT *

                  FROM table_name) a

         WHERE ROWNUM <= 40)

 WHERE rn >= 21

内部最内层的询问SELECT * FROM
TABLE_NAME表示不开展翻页的原来查询语句。ROWNUM <= 40和HavalN >=
21说了算分页查询的每页的约束。

上边给出的这么些分页查询语句,在大部分气象有所较高的频率。分页的指标正是调控输出结果集大小,将结果不久的回来。在上头的分页查询语句中,这种考虑器重体以往WHERE ROWNUM <=
40那句上。

筛选第21到40条记下存在三种办法,一种是上边例子中呈现的在询问的第二层通过ROWNUM
<=
40来决定最大值,在查询的最外层调节最小值。而另一种艺术是去掉查询第二层的WHERE
ROWNUM <=
40语句,在询问的最外层调控分页的最小值和最大值。那是,查询语句如下:

SELECT *

  FROM (SELECT a.*, ROWNUM rn

          FROM (SELECT *

                  FROM table_name) a)

 WHERE rn BETWEEN 21 AND 40

 

对照那三种写法,绝大好多的状态下,第二个查询的频率比第4个高得多。

那是由于CBO优化方式下,Oracle能够将外层的询问条件推到内层查询中,以增长内层查询的施行效用。对于第八个查询语句,第二层的查询条件WHERE
ROWNUM <=
40就足以被Oracle推入到内层查询中,那样Oracle查询的结果一旦超过了ROWNUM限定条件,就告一段落查询将结果重返了。

而第贰个查询语句,由于查询条件BETWEEN 21 AND
40是存在于查询的第三层,而Oracle不能将第三层的询问条件推到最内层(固然推到最内层也一向不意义,因为最内层查询不亮堂ENVISIONN代表怎么着)。因而,对于第叁个查询语句,Oracle最内层重临给中间层的是兼具知足条件的数量,而个中层再次来到给最外层的也是全体数据。数据的过滤在最外层完毕,明显那些功能要比第二个查询低得多。

上边深入分析的询问不止是指向单表的简单询问,对于最内层查询是千头万绪的多表联合查询或最内层查询包括排序的状态同样有效。

那边就不对包罗排序的查询进行表达了,下一篇作品会经过例子来详细表达。

 

下边简单研讨一下多表联合的情形。

对此最广大的等值表连接查询,CBO常常大概会使用两种连接方式NESTED
LOOP和HASH JOIN(ME奥迪Q3GE JOIN功效比HASH
JOIN效用低,平常CBO不会思量)。在那地,由于使用了分页,因而钦赐了一个赶回的最大记录数,NESTED
LOOP在回去记录数超越最大值时能够立即苏息并将结果回到给中间层,而HASH
JOIN必得处理完全数结果集(ME奥迪Q5GE
JOIN也是)。那么在大比非常多的事态下,对于分页查询选择NESTED
LOOP作为查询的连年方式具备较高的频率(分页查询的时候绝大多数的意况是询问前几页的数目,越靠前边的页数访谈概率越小)。

为此,如若不介意在系统中应用HINT的话,能够将分页的查询语句改写为:

SELECT *

  FROM (SELECT a.*, ROWNUM rn

          FROM (SELECT *

                  FROM table_name) a

         WHERE ROWNUM <= 40)

 WHERE rn >= 21

 

 

create procedure XiaoZhengGe

— 真正的批量交由 DECLARE CUSportageSO牧马人 cur IS SELECT * FROM user_objects;
TYPE rec IS TABLE OF user_objects%ROWTYPE; recs rec; BEGIN OPEN cur;
WHILE (TRUE卡塔尔(قطر‎ LOOP FETCH cur BULK COLLECT INTO recs LIMIT 100; — forall
完结批量 FORALL i IN 1 .. recs.COUNT INSERT INTO t_loop VALUES recs
(i); COMMIT; EXIT WHEN cur%NOTFOUND; END LOOP; CLOSE cur; END;

end:PageSize*Page

MySql:

select * from TABLE_NAME limit  A,  B;

解释:

A,查询起源

B,你供给的行数

SELECT TOP 10 *  FROM TestTable WHERE (ID NOT IN (SELECT TOP 20 id FROM
TestTable ORDER BY id)) ORDER BY ID 

SELECT t.card_code, substr(t.q, instr(; || t.q, ;, 1, rn), instr(t.q ||
;, ;, 1, rn) – instr(; || t.q, ;, 1, rn)) q FROM (SELECT a.card_code,
a.q, b.rn FROM t_change_cl_comma a, (SELECT ROWNUM rn FROM dual
CONNECT BY ROWNUM = 100) b WHERE instr(; || a.q, ;, 1, rn) 0) t ORDER BY
1, 2;

SQL>CREATETABLEsales_tab(

分页方案三:(利用SQL的游标存款和储蓄进度分页卡塔尔 效用最差,但是最棒通用

— 分页算法(why not this one卡塔尔(قطر‎ SELECT b.* FROM (SELECT a.*, ROWNUM rn
FROM t_employees a WHERE ROWNUM = 500 ORDER BY first_name) b WHERE
b.rn 480;

HAVING中使用子查询:

 代码如下:

— 硬解析/软解析 DROP TABLE t_hard PURGE; CREATE TABLE t_hard (ID
INT);

SELECT year_id,month_id,day_id,SUM(sales_value) FROM sales_tab
GROUP BY CUBE(year_id,month_id,day_id) ORDER BY
year_id,month_id,day_id GROUPING SETS()

SELECT TOP 页大小 * FROM TestTable WHERE (ID > (SELECT MAX(id) FROM
(SELECT TOP 页大小*页数 id FROM 表 ORDER BY id) AS T)) ORDER BY ID

SELECT t.card_code, t.rn q, decode(t.rn, 1, t.q1, 2, t.q2, 3, t.q3, 4,
t.q4) bal FROM (SELECT a.*, b.rn FROM t_change_cl a, (SELECT ROWNUM
rn FROM dual CONNECT BY ROWNUM = 4) b) t ORDER BY 1, 2;

翻开何人的工薪高于CLA奥德赛K的报酬?

Oracle分页

–行列调换 列转行 分割 DROP TABLE t_change_cl_comma; CREATE TABLE
t_change_cl_comma AS SELECT t1.card_code,
substr(MAX(sys_connect_by_path(t1.q, ;)), 2) q FROM (SELECT
a.card_code, a.q, row_number() over(PARTITION BY a.card_code ORDER BY
a.q) rn FROM t_change_lc_comma a) t1 START WITH t1.rn = 1 CONNECT BY
t1.card_code = PRIOR t1.card_code AND t1.rn – 1 = PRIOR t1.rn GROUP BY
t1.card_code;

ROLLUP()函数

exec sp_cursoropen @P1
output,@sqlstr,@scrollopt=1,@ccopt=1,@rowcount=@rowcount output

— 达成一条记下依照准绳多表插入 DROP TABLE t_ia_src; CREATE TABLE
t_ia_src AS SELECT a||ROWNUM c1, b||ROWNUM c2 FROM dual CONNECT BY
ROWNUM=5; DROP TABLE t_ia_dest_1; CREATE TABLE t_ia_dest_1(flag
VARCHAR2(10) , c VARCHAR2(10)); DROP TABLE t_ia_dest_2; CREATE TABLE
t_ia_dest_2(flag VARCHAR2(10) , c VARCHAR2(10)); DROP TABLE
t_ia_dest_3; CREATE TABLE t_ia_dest_3(flag VARCHAR2(10) , c
VARCHAR2(10));

表dept

分选第21到40条记下存在两种艺术,一种是下面例子中呈现的在询问的第二层通过ROWNUM
<=
40来支配最大值,在询问的最外层调节最小值。而另一种艺术是去掉查询第二层的WHERE
ROWNUM <= 40语句,在询问的最外层调整分页的最小值和最大值。

— 抽出/删除重复记录 DROP TABLE t_dup; CREATE TABLE t_dup AS
SELECT code_||ROWNUM code, dbms_random.string(z,5) NAME FROM dual
CONNECT BY ROWNUM=10; INSERT INTO t_dup SELECT code_||ROWNUM code,
dbms_random.string(z,5) NAME FROM dual CONNECT BY ROWNUM=2;

SELECT ename,job,deptno FROM emp WHERE deptno IN (SELECT deptno FROM emp
WHERE job=’SALESMAN’) AND job<>’SALESMAN’

浅析函数能用格式

— t_employees.department_id有索引 SELECT a.* FROM t_employees a
WHERE a.department_id = 10 AND EXISTS (SELECT 1 FROM t_orders b WHERE
a.employee_id = b.sales_rep_id);

查阅比职位是SALESMAN和CLE普拉多K薪水都高的职员和工人?

Pertion 依照某些字段分区

— OLAP — 小计合计 SELECT CASE WHEN a.deptno IS NULL THEN 合计 WHEN
a.deptno IS NOT NULL AND a.empno IS NULL THEN 小计 ELSE || a.deptno END
deptno, a.empno, a.ename, SUM(a.salState of Qatar total_sal FROM scott.emp a GROUP
BY GROUPING SETS((a.deptno),(a.deptno, a.empno, a.ename),());

SELECT ename,job,sal,deptno,RANK() OVER(PARTITION BY deptno ORDER BY sal
DESC) rank FROM emp

SELECT * FROM
(
    SELECT A.*, ROWNUM RN
    FROM (SELECT * FROM TABLE_NAME) A
    WHERE ROWNUM <= 40
)
WHERE RN >= 21

SELECT a.* FROM t_employees a WHERE a.department_id = 10 AND
a.employee_id IN (SELECT b.sales_rep_id FROM t_orders b);

SELECT SUM(sales_value) FROM sales_tab

exec sp_cursorfetch @P1,16,@currentpage,@pagesize

— 当前进数据和前/后n行的数量比较 SELECT a.empno, a.ename, a.sal, —
下面一行 lag(a.sal卡塔尔 over(OEnclaveDE揽胜 BY a.sal DESC卡塔尔(قطر‎ lag_1, — 上面三行
lead(a.sal, 3State of Qatar over(O兰德酷路泽DE卡宴 BY a.sal DESCState of Qatar lead_3 FROM scott.emp a ORDER
BY a.sal DESC;

ROUND(DBMS_RANDOM.value(low=>1,high=>100),2)ASsales_value

分页方案二:(利用ID大于多少和SELECT TOP分页)

SELECT * FROM t_dup;

SELECT year_id,month_id,day_id,SUM(sales_value) FROM sales_tab
GROUP BY GROUPING
SETS((year_id,month_id,day_id),(year_id,month_id)) 

@rowcount int

SELECT * FROM t_mg;

将各类参数的种种组里昂开展一回分组,然后将具有计算的结果并在一个结实集体现,所以CUBE分组次数为2的参数个数14回方。

 代码如下:

— FBI DROP TABLE t_fbi; CREATE TABLE t_fbi AS SELECT ROWNUM rn,
dbms_random.STRING(z,10) NAME , SYSDATE + dbms_random.VALUE * 10 dt
FROM dual CONNECT BY ROWNUM =10;

sales_valueNUMBER(10,2)NOT NULL

Mysql分页采取limt关键字

SELECT * FROM t_change_lc;

GROUP BY a,b,c UNION ALL GROUP BY a,b UNION ALL GROUP BY a UNION ALL
全表

SELECT xx.* FROMSELECT t.*,row_number()
over(ORDER BY o_id)AS num FROM t_order
t )xx WHERE num BETWEEN 5 AND 15; –返回第5-15行数据

— 如若存在就更新,不设有就插入用三个言语完结 DROP TABLE t_mg;
CREATE TABLE t_mg(code VARCHAR2(10), NAME VARCHAR2(10));

澳门京葡网站 1

海军蓝部分:得到鲜青部门查询的值,并询问出类其余rownum并钦定上别称。这一句就相比关键,起了叁个连片的效应,首先要算出rownum来对革命部分钦赐上序号,也足以为均红外面部分用到这么些变量。内定上查询的起初记录数和得了记录的准则。

— here for other operation v_cnt := v_cnt + 1; INSERT INTO t_lock
(ID) VALUES (v_cnt卡塔尔(قطر‎; COMMIT; –提交并且释放lock END;

                GROUP BY year_id,month_id

内部10表示取10记录 5表示从第5条记下开头取

— 不建议利用 SELECT * FROM t_fbi WHERE to_char(dt, yyyy-mm-dd) =
2006-09-21;

将地点是ANALYST与MANAGER看做一组,别之处看做另一组,分别总括人数?

虚构mySql中的完结分页,select * from 表名  limit
早先记录数,突显多少条;就能够达成大家的分页效果。

— 分组排序 SELECT a.deptno, a.empno, a.ename, a.sal, — 可跳跃的rank
rank() over(PARTITION BY a.deptno O中华VDEOdyssey BY a.sal DESC卡塔尔(قطر‎ r1, — 密集型rank
dense_rank(卡塔尔国 over(PARTITION BY a.deptno O奥德赛DE普拉多 BY a.sal DESCState of Qatar r2, —
不分组排序 rank(卡塔尔(قطر‎ over(OTucsonDEXC90 BY sal DESC卡塔尔(قطر‎ r3 FROM scott.emp a O安德拉DE冠道 BY
a.deptno,a.sal DESC;

在FROM中使用子查询:

====================================================================

SELECT a.card_code, SUM(decode(a.q, 1, a.bal, 0)) q1, SUM(decode(a.q,
2, a.bal, 0)) q2, SUM(decode(a.q, 3, a.bal, 0)) q3, SUM(decode(a.q, 4,
a.bal, 0)) q4 FROM t_change_lc a GROUP BY a.card_code ORDER BY 1;

start:(Page-1)*PageSize + 1

Select top 10 * from t_order where id not in (select id from
t_order where id>5 )
; //返回第6到15行数据

SELECT a.* FROM t_employees a WHERE EXISTS (SELECT 1 FROM t_orders b
WHERE b.customer_id = 12 AND a.employee_id = b.sales_rep_id);

DML中使用子查询

别的的方案:若无主键,可以用不时表,也足以用方案三做,不过效用会低。

— 分页算法(why not this oneState of Qatar SELECT a.*, ROWNUM rn FROM (SELECT *
FROM t_employees ORDER BY first_name) a WHERE ROWNUM = 500 AND ROWNUM
480;

在四个结出聚集观看每一日,每月,一年一度以至累积的营业额?

set nocount off

— 逐行提交 DECLARE BEGIN FOLacrosse cur IN (SELECT * FROM user_objects) LOOP
INSERT INTO t_loop VALUES cur; COMMIT; END LOOP; END;

ROLLUP会将参数字段每个递减并分组总结直至三个字段都未有,然后将这么些分组总计的结

其间最内层的询问SELECT * FROM
TABLE_NAME表示不实行翻页的庐山真面目目查询语句。ROWNUM <= 40和WranglerN >=
21决定分页查询的每页的界定。

— 冷眼寓目的落到实处逻辑,隐含bug DECLARE v_cnt NUMBEPRADO; BEGIN —
这里有并发性的bug SELECT MAX(IDState of Qatar INTO v_cnt FROM t_lock;

表emp

SELECT TOP 10 * FROM TestTable WHERE (ID > (SELECT MAX(id) FROM
(SELECT TOP 20 id FROM TestTable ORDER BY id) AS T)) ORDER BY ID 

— 精确的分页算法 SELECT * FROM (SELECT a.*, ROWNUM rn FROM (SELECT *
FROM t_employees ORDER BY first_name) a WHERE ROWNUM = 500) WHERE rn
480 ;

                             FROM(SELECT ename,job,sal

但是在oracle中没有limit关键字,但是有 rownum字段

— 悲观锁定/乐观锁定 DROP TABLE t_lock PURGE; CREATE TABLE t_lock AS
SELECT 1 ID FROM dual;

SELECT year_id,month_id,SUM(sales_value) FROM sales_tab GROUP BY
year_id,month_id

提议优化的时候,加上主键和目录,查询效用会抓实。

SELECT * FROM t_lock;

每三个参数是一种分组织承办法,它会将这一个分组计算的结果并在三个结果集体现。

@sqlstr nvarchar(4000卡塔尔国, –查询字符串

SELECT * FROM t_dup a WHERE a.ROWID (SELECT MIN(b.ROWID) FROM t_dup b
WHERE a.code=b.code);

分页查询就是将表中要询问出来的数码分批分段查询出来。那样做的裨益是当查问的数据量过大时能够减弱内部存款和储蓄器开支,提升系统响应速度,减弱互联网传输。

set nocount on

MERGE INTO t_mg a USING (SELECT the code code, the name NAME FROM dual)
b ON (a.code = b.code) WHEN MATCHED THEN UPDATE SET a.NAME = b.NAME WHEN
NOT MATCHED THEN INSERT (code, NAME) VALUES (b.code, b.NAME);

SELECT m.ename,m.job,m.sal FROM emp m WHERE EXISTS(SELECT * FROM emp e
WHERE e.mgr = m.empno)

由此SQL 查询剖判器,展现相比:结论是:

DROP INDEX idx_fbi_1; CREATE INDEX idx_fbi_1 ON t_fbi(trunc(dt));

SELECT * FROM(SELECT ROWNUM rn,ename,job,sal FROM emp卡塔尔国 WHERE rn BETWEEN
6 AND 10—-无查询结果

SELECT * FROM SELECT A.*,ROWNUM  num FROM   ( SELECT * FROM t_order
) A  WHERE  ROWNUM<=15 )
 WHERE num>=5;-返回第5-15行数据

SELECT * FROM t_change_cl_comma;

澳门京葡网站 2

declare @P1 int, –P1是游标的id