【问题标题】:Group By issue - Mysql按问题分组 - Mysql
【发布时间】:2021-03-09 04:39:30
【问题描述】:

我的表看起来像这样(我正在使用 MySQL):

id      NewID   SenderID    ReceiverID  msg     msgType         TimeStamp
1       5       9           8           dfdf    1           7-03-2021 6:10 AM
2       4       9           8           dfdf    1           7-03-2021 6:11 AM
3       3       9           8           dfdf    1           7-03-2021 6:13 AM
4       5       9           8           fgdf    1           7-03-2021 6:16 AM

我的目标是将 id (_maxid) 最高记录放在表的顶部,如果存在重复记录,则删除它。

我正在运行以下查询,

  SELECT    MAX(id) _maxid , NewID 
          FROM      tb_detail
          GROUP BY  id order by id desc

它会返回这个-

_maxid      NewID
4           5
3           3
2           4
1           5

预期结果:

_maxid      NewID
4           5
3           3
2           4

有什么想法吗?谢谢。

【问题讨论】:

  • 如果你想要每个newID 的最大值,为什么要按id 分组?
  • 这在整个场景中带来了另一个问题。以非常奇怪的方式改变顺序。 _maxid NewID 3 3 2 4 4 5
  • 你用的mysql是什么版本的?
  • order by 1 desc。尝试先阅读the documentation
  • 另外,如果你使用的是 MySQL,那么请不要添加其他 DBMS 的标签,因为它们不相关

标签: mysql group-by


【解决方案1】:

架构

create table tb_detail(id int,      NewID int,   SenderID    int,ReceiverID  int,msg varchar(10),     msgType         int, TimeStamp timestamp);
insert into tb_detail values(1,       5   ,    9,           8   ,        'dfdf',    1  ,'2021-7-03 6:10');
insert into tb_detail values(2 ,      4  ,     9 ,          8  ,         'dfdf' ,   1  ,  '2021-7-03 6:11');
insert into tb_detail values(3  ,     3 ,      9  ,         8 ,          'dfdf'  ,  1 ,  '2021-7-03 6:13');
insert into tb_detail values(4   ,    5,       9   ,        8,           'fgdf'   , 1,    '2021-7-03 6:16');

查询 #1

select max(id) _maxid,newid from tb_detail
group by newid
order by max(id) desc;
_maxid newid
4 5
3 3
2 4

View on DB Fiddle

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-10-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-30
    • 2011-04-01
    • 2021-10-27
    相关资源
    最近更新 更多