取前十條取后十條取區間值-限制取數區間


MySQL:
select * from table1 where 1=1 limit 10;

SQL Server:
讀取前10條:select top (10) * from table1 where 1=1;
讀取后10條:select top (10) * from table1 order by id desc;
在SQL Server里面,如何讀取按照某個排序,第3到6這四個記錄
select top 4 * from table1 where id not in(select top 2 id from table1);

oracle:
讀取前10條:select * from table1 where rownum<=10;
讀取后10條:select * from table1 where rownum<=10 order by id desc;
--取出第三條到第六條數據
(效率不高)
select * from (select * from table1 where rownum<=3) minus (select * from table1 where rownum<3);
--或者下面這個
select * from (select * from (select rownum rn, a.* from table1 a) where rn>=3) where rn<=6;

where 1=1仔細揣摩一下,在這里表示2種意思。
第一,當然它毫無疑問是一個恆等式,在這里有沒有都沒關系。不禁聯想起SQL注入的黑客手法。
第二,這里寫個1=1,它的重點是想告訴我,這里可以寫條件,比如:

格式:select * from 表名 where 列名=' ' limit 5,10;  -- limit numStart, num,其中numStart默認為0,表示從第1條開始,可以省略,
-- 條數下標從0開始,numStart表示從numStart+1條開始,num表示取num條
例子:select * from tb_email where toname='Jef' limit 5,10;
翻譯:表示在tb_email表中的發送人為Jef的所有數據從第6條開始取10條數據。

另外 desc是descend降序意思 asc是ascend 升序的意思
select top (10) * from table1; 默認為asc,並且默認用主鍵排序
select top (10) * from table1 order by id desc為desc;
想要加條件的話,即:
select top (10) * from table1 where shijian=' ' order by id desc;

這時不禁想問,用'select * from table order by'顯示時怎么讓order by 后面同時滿足兩個條件?
答:select * from table order by shijina,paixu desc;
在實際項目中,我建議大家做一個按鈕:
select case orderby
case 'shijian'
sql="select * from my_table order by shijian desc"
case 'paixu'
sql="select * from my_table order by paixu desc"
case else
sql="select * from my_table order by shijina,paixu desc"
end select
/

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM