SQL语句的TOP和ORDER BY查询到的数据比预想的还多?

当使用SQL语句"SELECT TOP 2 * FROM content ORDER BY date DESC"时,预期获取前两条记录,但实际返回更多。原因是如果有多个记录时间相同,TOP会将它们视为一条记录。SQL查询顺序是FROM、WHERE、GROUP BY、HAVING、SELECT、ORDER BY,而TOP位于SELECT中。由于ORDER BY先执行,当有重复时间时,TOP无法正确限制结果。解决方法是在ORDER BY中添加唯一标识符如ID,确保结果准确。
摘要由CSDN通过智能技术生成

今天修改一个asp页面时,用到sql server其中有句SQL语句,简写为"select top 2 * from content order by date desc",意思就是按时间降序排列,取前两条,但是数据却显示了三条。做了个小实验,又插入几条时间相同的数据,事实就是会显示更多。原来第二条与第三条数据的时间是一样的,在按时间降序之后,top把其看成为一条数据,都选择出来了。

查了一下,原来SQL有自己的查询逻辑,按我理解的就是先是FROM,找到表即查询位置,再是WHERE确定查询条件,三是GROUP BY分组,四是HAVING过滤,五是SELECT,六是ORDER BY排序。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值