原始表的形式如下所示:
LocaleTimeStamp AccountID TradingDay MortgageableFund
2016/3/17 15:44:34 49267 2016/3/17 999827.6
2016/3/17 15:44:56 50030 2016/3/17 1197.79
2016/3/17 15:44:20 49267 2016/3/17 2410129.47
2016/3/17 15:44:51 50030 2016/3/17 1197.79
2016/3/16 16:44:59 49267 2016/3/16 1000000
2016/3/16 16:46:01 50030 2016/3/16 1000000
2016/3/16 16:48:56 49267 2016/3/16 1197.79
2016/3/16 16:48:45 50030 2016/3/16 1000000
从上表可以看到,总共有两个帐户,49267和50030
想要把这两个帐户每天的最后一条数据提取出来,得到如下形式的表:
LocaleTimeStamp AccountID TradingDay MortgageableFund
2016/3/17 15:44:34 49267 2016/3/17 999827.6
2016/3/17 15:44:56 50030 2016/3/17 1197.79
2016/3/16 16:48:56 49267 2016/3/16 1197.79
2016/3/16 16:48:45 50030 2016/3/16 1000000
请教Mysql语句该怎么写,感谢。
LocaleTimeStamp AccountID TradingDay MortgageableFund
2016/3/17 15:44:34 49267 2016/3/17 999827.6
2016/3/17 15:44:56 50030 2016/3/17 1197.79
2016/3/17 15:44:20 49267 2016/3/17 2410129.47
2016/3/17 15:44:51 50030 2016/3/17 1197.79
2016/3/16 16:44:59 49267 2016/3/16 1000000
2016/3/16 16:46:01 50030 2016/3/16 1000000
2016/3/16 16:48:56 49267 2016/3/16 1197.79
2016/3/16 16:48:45 50030 2016/3/16 1000000
从上表可以看到,总共有两个帐户,49267和50030
想要把这两个帐户每天的最后一条数据提取出来,得到如下形式的表:
LocaleTimeStamp AccountID TradingDay MortgageableFund
2016/3/17 15:44:34 49267 2016/3/17 999827.6
2016/3/17 15:44:56 50030 2016/3/17 1197.79
2016/3/16 16:48:56 49267 2016/3/16 1197.79
2016/3/16 16:48:45 50030 2016/3/16 1000000
请教Mysql语句该怎么写,感谢。
解决方案
20
20
用Where Not Exists
找出这样的数据他们不满足以下条件,ID和本人相同但是日期比本人大
这样找出就是最大的
本人的例子是这样
SELECT * FROM dbo.Sys_Log log1
WHERE NOT EXISTS(
SELECT * FROM dbo.Sys_Log log2
WHERE log2.LogBy= log1.LogBy AND log2.CreateDate>log1.CreateDate)
找出这样的数据他们不满足以下条件,ID和本人相同但是日期比本人大
这样找出就是最大的
本人的例子是这样
SELECT * FROM dbo.Sys_Log log1
WHERE NOT EXISTS(
SELECT * FROM dbo.Sys_Log log2
WHERE log2.LogBy= log1.LogBy AND log2.CreateDate>log1.CreateDate)