sql排序、oracle的rownum相關。

10:15sql


數據庫中,一個agentcode可能對應着多個enddate,這兒須要取出排序後最頂上一個。數據庫

個人想法是將全部enddate用code

select enddate from t_agreement where agentcode = "00000001";

來取出來存放到一個List中,而後試用String的replace方法將其中的"/"字符去掉。再用快排將其進行排序,以後取第一個,加上"/"。完成。排序


龍哥的說法是,你直接在sql取的時候就排好不就行了啊。。。table

select max(enddate) from t_agreement where agentcode = "000000001";


就這樣。class

仍是對sql理解不夠深入。。date


14:50List


t_orclselect

id type
11 a
3 b
2 c
6 d
5 e
8 f

上述表中按 id 排序後取出第三行元素。
方法


首先咱們要作的是按 id 排序。

select * from t_orcl order by id;


接下來,爲了保證rownum順序是正確的,咱們只能嵌套一層select:

select id, type, rownum rn from (select * from t_orcl order by id);


這樣咱們獲得了這樣一張表:

id type rn
2 c 1
3 b 2
5 e 3
6 d 4
8 f 5
11 a 6


而後呢咱們就能夠取第三行了:

select * from (select id, type, rownum rn from (select * from t_orcl order by id)) t where t.rn = 3;


id type rn
5 e 3


就是這樣,簡單明瞭。

固然了,還有另一種方法,吶,或許好用。

select * from (select id, type, rownum from (select * from t_orcl order by id) where rownum < 4) having id = max(id);


對了當你用這種逗比語句受到嘲諷的時候請不要甩鍋給我謝謝。

相關文章
相關標籤/搜索