SQLSERVER的TOP

php中文网
发布: 2016-06-07 17:45:01
原创
1431人浏览过

相信很多使用SQL很多人都用过TOP语句 使用方法是: SELECT TOP (n) FROM tablename WHERE condition 我们可以很方便的从表tablename去到符合条件的前n条数据。 --------------------------------------------------------------------------------------

相信很多使用sql很多人都用过top语句

使用方法是:

SELECT TOP (n)

FROM tablename

WHERE condition

我们可以很方便的从表tablename去到符合条件的前n条数据。

--------------------------------------------------------------------------------------

例如,我们有表

aaa

表中数据是:

  qq             qq2           

a1         11        

a2         11        

a3         11        

a4         11        

执行:

SELECT TOP (2) qq, qq2
FROM aaa

出来的结果是: 

qq qq2

a1         11        

a2         11        

这正是我们想要的,这个东西还真是不错,用着蛮方便的哟。

--------------------------------------------------------------------------------------

但是,今天程序中跑出来一个东西,发现不是自己想要的东西。

降迹灵AI
降迹灵AI

用户口碑TOP级的降AIGC率、降重平台

降迹灵AI 53
查看详情 降迹灵AI

现象是这样的,

数据还是上面的数据,检索条件上面的检索条件,我加了一个order by语句,当然,这个orderby有点特殊,就是,我要排序的列的值全部是相同的。

正常没有TOP条件的情况下

SELECT qq, qq2
FROM aaa
ORDER BY qq2

结果和前面没有orderby是一致,也是和数据库中存放的次序是一样的。

 

  qq             qq2           

a1         11        

a2         11        

a3         11        

a4         11        

当我们增加一个TOP(1)的时候,正常情况下,香港虚拟主机,虚拟主机,我们会认为应该检索出来第一条,美国服务器,也就是【a1】【11】。

SELECT TOP (1) qq, qq2
FROM aaa
ORDER BY qq2

但是,真正检索出来的数据是这样的

qq qq2

a2         11        

这个时候感觉sqlserver做的有点和我们常识不一样了。

同样,当我们换作是TOP(2)的时候,检索出来的第三件和第二件

TOP(3)的时候,检索出来的是第四件和第三件和第二件。

 

SQLSERVER这么做或许也无可厚非,因为排序的字段的值是一样的,可以认为等价的数据,返回谁,按理来说,应该对业务没有什么影响的。

 

*编程中,偶尔也会遇到我们预想之外的事情,也会给我们写惊喜的。

相关标签:
最佳 Windows 性能的顶级免费优化软件
最佳 Windows 性能的顶级免费优化软件

每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号