mysql 使用group by 取到相同字段对应多条记录的最大日期那条记录

总之这个业务逻辑有问题,数据库建表也是有点问题,他关联的表中没有唯一的主键

如下,关联两张表,查询出来相关的数据,如下:

select 
     a.id as 'id',
     a.title as "title",
     a.slug as "slug",
     b.org_id as 'orgid',
     b.user_id as 'userid',
     b.updated as 'time'
from dashboard a, dashboard_snapshot b 
where a.title = b.name;

两张表并没有唯一的关联字段当主键,不太严谨,现在已title字段进行关联。

mysql 使用group by 取到相同字段对应多条记录的最大日期那条记录_第1张图片
image

查询出来5条记录,怎么让 当org_id user_i相同的记录,只获取最后日期的那条记录。

使用group by

group by 过滤出来的是某个字段列的唯一的记录,
如果想获取多个,就group by 多个,这样如果其他都相同的情况下就只有一条记录了;
最后使用mysql中max()函数就可以取到最大值的那条记录。

select 
      a.id,
      a.title,
      a.slug,
      b.org_id as 'orgid',
      b.user_id as 'userid',
     max(b.updated)
from dashboard a, dashboard_snapshot b 
where a.title = b.name 
group by b.org_id,b.user_id,a.title,a.slug,a.id
image

但我总感觉这样写不太符合业务实际,又不知道会存在其他的什么潜在问题。

你可能感兴趣的:(mysql 使用group by 取到相同字段对应多条记录的最大日期那条记录)