【问题标题】:How to retrieve the last record in each group如何检索每个组中的最后一条记录
【发布时间】:2015-06-29 06:31:41
【问题描述】:

我正在尝试使用 group by 从我的表中获取数据。使用 group by 可以正常工作,但我只需要获取每个组的最后一个插入项目,但它不起作用。我的查询总是返回每个组的第一项。

我的查询

SELECT id,type,userId,performDate,eventId FROM
`user_marker` where  `eventId`='842' and DATE_FORMAT(from_unixtime(performDate),'%Y%c%d')
=DATE_FORMAT(now(),'%Y%c%d') 
 and `visibility`='1'GROUP BY type ORDER BY id DESC

【问题讨论】:

标签: php mysql group-by


【解决方案1】:

请尝试

SELECT a.* FROM ( SELECT id,type,userId,performDate,eventId FROM 
`user_marker` where  `eventId`='842' and DATE_FORMAT(from_unixtime(performDate),'%Y%c%d')
=DATE_FORMAT(now(),'%Y%c%d') and `visibility`='1' ORDER BY id DESC ) as a GROUP BY a.type 

【讨论】:

    【解决方案2】:

    您可以按照以下方式尝试-

    SELECT b.id,b.type,b.userId,b.performDate,b.eventId 
    FROM user_marker b 
    JOIN (SELECT `type`,MAX(performDate) 
    FROM user_marker 
    WHERE  `eventId`='842' AND DATE(FROM_UNIXTIME(performDate))=CURDATE() AND `visibility`='1' 
    GROUP BY `type`) a ON a.type=b.type AND a.performDate=b.performDate 
    ORDER BY b.`type`;
    

    【讨论】:

    • 感谢@Strawberry 引起我的注意,其实我在检查unixtime 格式,如果它转换成相同的mysql 格式,这样我们就可以避免一个额外的date_format 函数。
    • 仍然缺少那个别名
    猜你喜欢
    • 2010-11-21
    相关资源
    最近更新 更多