UDN-企业互联网技术人气社区

板块导航

浏览  : 1059
回复  : 1

[面试相关] mysql,sqlserver,oracle取前10条数据

[复制链接]
顶风尿三丈的头像 楼主
发表于 2015-6-1 11:47:23 | 显示全部楼层 |阅读模式
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
select * from(select * from(select rownum no ,a.* from table1 a) where no>0) where rownum
这是一道公司比较喜欢玩弄的一道面试题。
我在网上找到了最全的答案。
猛一看,没看懂什么意思,后来仔细看明白了。
我主要的疑惑是 “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
发表于 2015-6-29 08:31:52 | 显示全部楼层
顶   
使用道具 举报

回复

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关于我们
联系我们
  • 电话:010-86393388
  • 邮件:udn@yonyou.com
  • 地址:北京市海淀区北清路68号
移动客户端下载
关注我们
  • 微信公众号:yonyouudn
  • 扫描右侧二维码关注我们
  • 专注企业互联网的技术社区
版权所有:用友网络科技股份有限公司82041 京ICP备05007539号-11 京公网网备安1101080209224 Powered by Discuz!
快速回复 返回列表 返回顶部