1.Oracle中拿到前10条记录
select * from table1 where rownum<=10 --效率不高
select * from (select * from tb_user where rownum<=2*2) minus (select * from tb_user where rownum<=1*2)
select * from(select * from(select rownum no ,a.* from table1 a) where no>0) where rownum<=6;
rownum只能是小于,因为rownum是游标。必须把游标全读出来,才能通过no参数表示大于。
2.Mysql中拿到前10条记录
select * from table1 where 1=1 limit 10
3.Sql server中拿到前10条记录
读取前10条:
select top (10) * from table1 where 1=1
读取后10条:
select top (10) * from table1 order by id desc
在sqlserver里面,如何读取按照某个排序,第5到10这五个记录
select top 6 * from table where id not in(select top 4 id from table)
总结:我主要的疑惑是 “1=1”
仔细揣摩一下,在这里表示2种意思。
第一,当然它毫无疑问是一个恒等式,在这里有没有都没关系。不禁联想起sql注入的黑客手法。
第二,这里写个1=1,它的重点是想告诉我,这里可以写条件,比如:
格式:select * from 表名 where 列名=” ” limit 5,10
例子:select * from tb_email where toname= ‘caixiangyu’ limit 5,10
翻译:表示在tb_email表中的发送人为caixiangyu的所有数据从第5个开始取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