我有这个查询
SELECT MAX(`sms`.`datetime`) as `datetime`, `sms`.`id_phone`
FROM `user`, `sms`
WHERE `user`.`id` = `sms`.`user_id`
AND (`user`.`id` = '42')
GROUP BY `sms`.`id_phone`
如何获取与返回行对应的id
字段?
如果我SELECT MAX(sms.datetime) as datetime, sms.id_phone, sms.id
它将不会给我与MAX(日期时间)行相对应的ID,但是来自该组的任何ID ...
我无法弄明白。 感谢
答案 0 :(得分:1)
一种简单的方法是使用子查询:
SELECT sms.id from sms
WHERE sms.datetime =
SELECT MAX(sms.datetime)
FROM user, sms
WHERE user.id` = sms.user_id
AND (user.id = 42)
添加您想要的其他字段以及分组依据。
一个问题是,如果两行具有相同的最大日期时间。如果这是可能的,并且您只想要一个结果,请使用LIMIT。
答案 1 :(得分:0)
通过使用特定的? mysql功能,我发现了一种难以实现的方法, GROUP_CONCAT 聚合函数中的 ORDER BY ,如下所示:
SELECT GROUP_CONCAT(images.id ORDER BY images.id), contributions.id FROM images JOIN contributions ON images.object_id = contributions.id WHERE (object_type = 1 OR object_type IS NULL) AND place = 1 GROUP BY contributions.id HAVING COUNT(*) > 1
此查询没有回答具体回答我的问题,因为我发现它时已经太晚了。要做到这一点,必须稍微改变一下。但这是一个很好的搜索方向。