SQL 嵌套查询问题

 

今天纠结了好长时间 , 才解决的一个问题 ,

问题原因是 求得多条数据中,  时间和日期是最大的一条数据

先前是以为只要msx 函数就可以解决的 ,

Select * from tableName where date=(select max(date) from TableName)  and time =(select max(time) from TableName)

 

测试的时候发现取出的是一条数据, 因为测试的时候是一天中的两条数据, 没有不同的日期,所以当日以为是正确的 ,然而第二天写入数据了,要取出数据,却发现没有数据, 返回空的行, 以为都是代码又有问题 了,找了半天都没有 ,仔细看看了存储过程中的代码,发现这样返回的数据的确是空的。

这个是嵌套查询的语句。  先执行的是外部查询的语句 。

 

比如说有三条信息.用上面写的语句在SQL分析器中执行

 

 

 

 

分析下这样的查询  先查找的是 日期 , 日期最大是下面两条语句 。 在对比时间 。 发现时间最大的只有一

条数据, 这样第二条数据就理所当然的被取出来了。 这个是当时测试的结果

 

 

 

但后来我修改了数据 。第二天测试发现,数据为空了。 没有数据 。分析是这样的

查询到的最大天数是2013-03-18这条数据。第三行。 而时间最带的是21:12:21 第二条数据

这样与的结果就是没有交集,为空了。

 

 

 

 

后来通过 查找课本和询问他人。 问题解决了 ,办法就是通过排序的方法

 order by Desc 的降序排顺 ,排序可以是通过不同的方式,可以叠加的

上面的语句若果改正为以下语句,就会是想要结果

 

select top 1 * from T_CheckBill  order by date desc,time desc

 

 

 

以上是自己的发现。 交流是一定要的,不然自己的想法很局限了

 

  • 3
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 6
    评论
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值