[转]Mysql将数据分组后取出时间最近的数据

如题,我在网上也找过相关解决方法,很多解答都是这么一句SQL语句:

select Id,AccountId,Mark,max(CreateTime) as Latest from AccountMark as b group by AccountId

使用Max函数。但是在我查出来的数据中似乎有些不对,如图,反白的那一条数据,Mark字段和CreateTime字段根本不对应啊!

这是怎么回事?使用Max函数后在分组这样靠谱吗?

还有一条语句:select *,COUNT(AccountId) as Num from

(select * from AccountMark order by CreateTime desc) `temp`

group by AccountId order by CreateTime desc

这样查出来的数据是对的

但是,我需要创建视图,Mysql中视图里不允许出现查询子句。求大神些一条SQL语句,能实现既不出现子句,又能查出正确数据。谢谢!

解决方法:

select * from AccountMark as b where not exists(select 1 from AccountMark where AccountId= b.AccountId

and b.CreateTime<CreateTime )

原文地址:http://bbs.csdn.net/topics/390958705

时间: 2024-10-11 17:46:06

[转]Mysql将数据分组后取出时间最近的数据的相关文章

SQL数据分组后取最大值或者取前几个值(按照某一列排序)

今日做项目的时候,项目中遇到需要将数据分组后,分组中的最大值,想了想,不知道怎么做,于是网上查了查,终于找到了思路,经过比较这个查询时目前用时最快的,其实还有别的方法,但是我觉得我们只掌握最快的方法就行 ,好了,不说废话了! 直接上内容吧:以下数据是通过 SELECT [CustomerCaseNo],[PaymentsTime] FROM [BOMSDatabase].[dbo].[BAL_paymentsSwiftInfo] where StoresNo='zq00000034' group

SQL数据分组后取最大值或者取前几个值(依照某一列排序)

今日做项目的时候,项目中遇到须要将数据分组后,分组中的最大值,想了想,不知道怎么做.于是网上查了查,最终找到了思路,经过比較这个查询时眼下用时最快的,事实上还有别的方法,可是我认为我们仅仅掌握最快的方法即可 .好了,不说废话了! 直接上内容吧:下面数据是通过 SELECT [CustomerCaseNo],[PaymentsTime] FROM [BOMSDatabase].[dbo].[BAL_paymentsSwiftInfo] where StoresNo='zq00000034' gro

数据库表分组后按时间排序,取每个分组中最近的一条记录

数据库表分组后按时间排序,取每个分组中最近的一条记录.在网上找了好几个,都不行,最终找到了解决办法,Oracle亲测可以. with m as (select id,max(times) c from test_max group by id)select n.id,n.duowei from test_max n join m on m.id=n.id and m.c=n.times 第一次在博客园写知识,愿意和大家分享.

mysql或者oracle分组排序取前几条数据

mysql: select a.* from(select t1.*,(select count(*)+1 from 表 where 分组字段=t1.分组字段 and 排序字段<t1.排序字段) as group_idfrom 表 t1) awhere a.group_id<=3 Oracle: SELECT t.*            FROM (SELECT ROW_NUMBER() OVER(PARTITION BY 分组字段 ORDER BY 排序字段 DESC) rn,      

Sql_从查询的结果集中分组后取最后有效的数据成新的结果集小记(待优化)

Dim sql As String = " SELECT xp.*, " sql = sql + " xf_owner.ownername, " sql = sql + " xf_receiver.receivename, " sql = sql + " lastprice = " sql = sql + " ( " sql = sql + " SELECT TOP 1 " sql =

每天一点数据库之-----Day 6 数据分组与数据分页

每天一点数据库之-----Day 6 数据分组与数据分页 ----转载请注明出处:coder-pig 本节引言: 本节继续来学习SQL中的数据查询中的数据分组~ 先建个表,录几条数据,顺道复习下之前学的内容~ 之前建立的T_Worker都用了几天了,今天就来弄个新的表吧T_Product商品表: 建表SQL: CREATE TABLE T_Product ( PId INTEGER, PName VARCHAR(20), PKind VARCHAR(20), PCity VARCHAR(10),

小白学 Python 数据分析(11):Pandas (十)数据分组

人生苦短,我用 Python 前文传送门: 小白学 Python 数据分析(1):数据分析基础 小白学 Python 数据分析(2):Pandas (一)概述 小白学 Python 数据分析(3):Pandas (二)数据结构 Series 小白学 Python 数据分析(4):Pandas (三)数据结构 DataFrame 小白学 Python 数据分析(5):Pandas (四)基础操作(1)查看数据 小白学 Python 数据分析(6):Pandas (五)基础操作(2)数据选择 小白学

MSSQL&mdash;按照某一列分组后取前N条记录

以前在开发的时候遇到过一个需求,就是要按照某一列进行分组后取前几条数据,今天又有同事碰到了,帮解决了之后顺便写一篇博客记录一下. 首先先建一个基础数据表,代码如下: IF OBJECT_ID(N'Test') IS NOT NULL    BEGIN        DROP TABLE Test    END CREATE TABLE Test(ID bigint IDENTITY(1,1),Name nvarchar(50),Department nvarchar(50)) INSERT IN

9.数据分组 ---SQL

一.创建分组 分组是使用SELECT语句的GROUP BY子句建立的.理解分组的最好办法是看一个例子: SELECT vend_id, COUNT(*) AS num_prods FROM Products GROUP BY vend_id; 输出▼ vend_id num_prods ------- --------- BRS01 3 DLL01 4 FNG01 2 分析▼上面的SELECT语句指定了两个列:vend_id包含产品供应商的ID,num_prods为计算字段(用COUNT(*)函