oracle查詢資料只要排序後的第一條記錄(不用rownu

2021-10-05 03:03:21 字數 2497 閱讀 9595

1樓:匿名使用者

1、建立測試表,

create table test_order(id number, value varchar2(50));

2、插入測試資料

insert into test_order values(3,'v3');

insert into test_order values(2,'v2');

insert into test_order values(1,'v1');

insert into test_order values(5,'v5');

insert into test_order values(4,'v4');

commit;

3、查詢表中全量資料,可以發現資料並未排序,select t.*, rowid from test_order t;

4、編寫sql,資料只要排序後的第一條記錄(不用rownum=1) select * from (select t.*, row_number() over(order by id) rn from test_order t) t where rn = 1;

2樓:匿名使用者

假設排序的欄位名字為field1降序, table name: tab

select field1, field2, field3... fieldn

from (select field1, field2, field3...fieldn, row_number() over(order by field1 desc) as rk ) from tab ) t

where rk = 1

00904是說列名不正確,仔細看了下,as rk後面多了一個括號,下面這樣就可以了

select field1, field2, field3... fieldn

from (select field1, field2, field3...fieldn,

row_number() over(order by field1 desc) as rk

from tab

where field1=表名.欄位名) t

where rk = 1

我給你改一下吧,你寫的那個效率很低的

select t1.a, t1.b, t2.field1, t2.field2, t2.field3...t2.fieldn

from lkk t1,

(select field1, field2, field3...fieldn,

row_number() over(order by field1 desc) as rk

from tab) t

where t.field1 = t1.a

and t.rk = 1

3樓:

如果該表有時間或數值型別欄位的話可以採用如下;

select *

from table a

where a.time = (select max (b.time)

from table b) ;

4樓:

select field1, field2, field3... fieldn

from (select field1, field2, field3...fieldn, row_number() over(order by field1 desc) as rk ) from tab ) t

where rk = 1

把這個語句巢狀到別的語句裡面後

select t.a,t.b,

(select field1, field2, field3... fieldn

from (select field1, field2, field3...fieldn, row_number() over(order by field1 desc) as rk ) from tab where field1=t.a) t

where rk = 1)

from lkk t;

會報錯 ora-00904 where field1=t.a)

5樓:匿名使用者

首先在 xsremobile 表上建 senddate和id 的複合索引.

把 where rownum < 50 + 1改為 where rownum <= 50應該可以快些.

select /*+ first_rows */ *from (select /*+ parallel(m,10) */ *

from xsremobile m

where m.senddate >= 20101126and m.senddate <= 20101126order by m.id desc

)where rownum <= 50

6樓:匿名使用者

少了一個as - -!

7樓:匿名使用者

先排序 再顯示第一條

oracle資料庫如何查詢表資料量

1 檢視錶空間的大小,首先我們要登入到oracle資料庫,我們要使用管理員的身份登入,因為管理員的許可權要相對的大一些。2 登入到資料庫之後,我們要在側邊欄找到dataspace這個資料夾,這個資料夾下存放的就是我們管理員可以管理的所有的表空間的名稱。3 根據dataspace資料夾下的內容名稱,選...

oracle按小時查詢顯示資料,在oracle中如何實現查詢某一時間段的資料?

可以使用to char concat 等函式實現查詢前一小時 前一天 前一個月或者前一年的資料。1 查詢一小時 1 to char sysdate,yyyy mm dd 將系統當前時間轉換為字元型別,僅取出年月日 2 字串連線符 3 to char sysdate,hh24 1取出系統當前時間的小時...

oracle查詢資料時如何去掉後面的括號內容

樓主您好 第二列kcmc 可以用regexp replace kcmc,替換查詢 那個括號應該是全形的,注意函式裡的括號也是全形的如果有全形的或者半形的可以替換成 select regexp replace 畢業 全 2 from dual union select regexp replace 畢...