当前位置: 代码迷 >> Sql Server >> sql标准,有规定top 一给出结果的顺序吗
  详细解决方案

sql标准,有规定top 一给出结果的顺序吗

热度:106   发布时间:2016-04-24 08:58:39.0
sql标准,有规定top 1给出结果的顺序吗?
抱歉,我现在用的是sqlite,不支持top 1,它用limit 1限制结果只一条

select * from support_plate where b2_a2 > 3 LIMIT 1


在support_plate 表里的b2_a2列 已经是排过序的了,从上面这个表里搜b2_a2大于某个值的第一条记录,
比如说,有3.1和3.2两个值,一定要搜出来3.1这条

目前我用sqlite,结果都是正确的.我想,它可能就是按顺序比较,发现第一条满足的,就返回了.

我不知道在其它数据库上是不是也能得到同样的效果.万一别的数据库用什么二分查找,得到的结果可能就不是想要的了.
------解决思路----------------------
不加ORDER BY,第一条应该是主键或是聚集索引中的第一条,如果没有主键或是聚集索引,应该是表被插入的第一条记录。
------解决思路----------------------
各个数据库系统对无序扫描的处理可能都不一样

既想无序扫描,又想各个数据库都一样,无异缘木求鱼
------解决思路----------------------
引用:
Quote: 引用:

你可以加ORDER BY根据某列排序,这样每个数据库就都一样了
这样效率不就太低了


我觉得 这个不确定的,你现在的结果是正确的,没几天 可能又不对了,可能返回的是3.2了。

要保证一定会返回小的那个,必须要用order by 在要排序的列上 建个索引就可以了,这样效率就高了
  相关解决方案