设为首页 加入收藏

TOP

mysql,sqlserver,oracle取前10条数据
2014-11-23 20:07:45 来源: 作者: 【 】 浏览:17
Tags:mysql sqlserver oracle 取前 数据

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
在sqlserver里面,如何读取按照某个排序,第5到10这五个记录
select top 6 * from table where id not in(select top 4 id from table)


oracle:
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参数表示大于。


这是一道公司比较喜欢玩弄的一道面试题。
我在网上找到了最全的答案。
猛一看,没看懂什么意思,后来仔细看明白了。
我主要的疑惑是 “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


】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇How long would you like to stay.. 下一篇软件测试工程师结构化面试题库

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: