打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
mysql
我尝试进行一个简单的查询,花了几个小时,却一无所获.
我需要的是获取MAX日期,并且所有字段都是对应的字段.

我在解释:
我有一个具有以下字段的表:BasketID,OrderStatusTypeID,StatusDate.
我尝试只获取一个包含OrderStatusTypeID值和最后一个StatusDate的记录.

这是数据

BasketID    OrderStatusTypeID   date1111        13              2013-04-01 11:38:311111        26              2013-04-04 17:44:171111        39              2013-04-02 12:35:071111        40              2013-04-08 12:52:55复制代码

这是我的查询:

SELECT BasketID, OrderStatusTypeID, max(StatusDate) dateFROM stwhere BasketID=1111group by BasketID复制代码

这是我需要的结果

BasketID    OrderStatusTypeID   date63558       40          2013-04-08 12:52:55复制代码

由于某种原因,我只能得到OrderStatusTypeID = 13而不是40!
(最大StatusDate,而不是最大OrderStatusTypeID).
为什么???

BasketID    OrderStatusTypeID   date63558       13                   2013-04-08 12:52:55复制代码

感谢您的快速回复!

最佳答案
我假设您正在使用MySQL,因为即使您未在GROUP BY子句中指定所有非聚合列,也可以运行查询.

有很多解决问题的方法,但是我习惯于这种方式.该查询使用一个子查询,该子查询分别获取每个BasketID的最新日期.由于子查询仅返回两列,因此您需要将其重新连接到表本身,以获取其他列,只要它在两列上都匹配:BasketID,Date.

SELECT  a.*FROM    st a        INNER JOIN        (            SELECT  BasketID, MAX(Date) max_date            FROM    st            GROUP   BY BasketID        ) b ON  a.BasketID = b.BasketID AND                a.Date = b.max_date复制代码

即使存在GROUP BY子句中未指定的非聚合列,查询也已成功执行,而不会引发异常,因为在MySQL中是允许的.参见MySQL Extensions to GROUP BY.

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
SQL 难点解决:序列生成
MYSQL&PHP的Notes
MySQL
关于Mysql的日期类型字段设置默认值为当前日期的解决方案
批处理实现自动备份MySQL数据库并上传至百度PCS
MYSQL利用Navicat对含有Bold字段表进行导入导出
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服