MySQL分组和聚合,最后如何获取想要的id?

MySQL分组和聚合,最后如何获取想要的id?,mysql,aggregate,Mysql,Aggregate,我有这个疑问 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`
FROM `user`, `sms`                   
WHERE `user`.`id` = `sms`.`user_id`                   
AND (`user`.`id` = '42')                   
GROUP BY `sms`.`id_phone`
如何获取返回行对应的
id
字段? 如果我选择MAX(sms.datetime)作为datetime,sms.id\u phone,sms.id它不会给我与MAX(datetime)行对应的id,而是给我组中的任何id by

我想不出来。
谢谢

一个简单的方法是使用子查询:

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) 
添加所需的其他字段和分组依据


一个问题是如果两行具有相同的最大日期时间。如果这是一种可能性,并且您只需要一个结果,请使用限制。

一种简单的方法是使用子查询:

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) 
添加所需的其他字段和分组依据


一个问题是如果两行具有相同的最大日期时间。如果这是一种可能性,并且您只想要一个结果,请使用限制。

我发现了一种巧妙的方法,通过使用特定的?mysql特性, 排序依据组中聚合函数如下:

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

这个问题没有具体回答我的问题,因为我发现这个问题已经太晚了。要做到这一点,就必须稍微改变一下。但这是一个很好的搜索方向。

我发现了一种巧妙的方法,通过使用特定的?mysql特性, 排序依据组中聚合函数如下:

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

这个问题没有具体回答我的问题,因为我发现这个问题已经太晚了。要做到这一点,就必须稍微改变一下。但是这是一个很好的搜索方向。

谢谢,但是你的回答会一部分一部分地跳过分组,我认为这是我问题的主要问题,而且我不能有一个子查询,因为我在1.000.000条目的表上运行这个。我想这是不可能的,正如这里提到的:太糟糕了。谢谢,但是你的回答会一部分一部分地跳过小组,我认为这是我问题的主要问题,而且我不能有一个子查询,因为我在1.000.000条目的表上运行这个。我想这是不可能的,正如这里提到的:太糟糕了。