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

时间:2022-06-01 21:36:45
抱歉,我现在用的是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,结果都是正确的.我想,它可能就是按顺序比较,发现第一条满足的,就返回了.

我不知道在其它数据库上是不是也能得到同样的效果.万一别的数据库用什么二分查找,得到的结果可能就不是想要的了.

5 个解决方案

#1


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

#2


引用 1 楼 ky_min 的回复:
你可以加ORDER BY根据某列排序,这样每个数据库就都一样了
这样效率不就太低了

#3


不加ORDER BY,第一条应该是主键或是聚集索引中的第一条,如果没有主键或是聚集索引,应该是表被插入的第一条记录。

#4


各个数据库系统对无序扫描的处理可能都不一样

既想无序扫描,又想各个数据库都一样,无异缘木求鱼

#5


引用 2 楼 oN5GrzoN 的回复:
Quote: 引用 1 楼 ky_min 的回复:

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


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

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

#1


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

#2


引用 1 楼 ky_min 的回复:
你可以加ORDER BY根据某列排序,这样每个数据库就都一样了
这样效率不就太低了

#3


不加ORDER BY,第一条应该是主键或是聚集索引中的第一条,如果没有主键或是聚集索引,应该是表被插入的第一条记录。

#4


各个数据库系统对无序扫描的处理可能都不一样

既想无序扫描,又想各个数据库都一样,无异缘木求鱼

#5


引用 2 楼 oN5GrzoN 的回复:
Quote: 引用 1 楼 ky_min 的回复:

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


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

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