GROUP BY ID显示相同ID的最新条目

时间:2018-12-07 15:39:37

标签: mysql

我知道这已经被要求回答一次。但是我似乎无法解决这个问题。

我正在尝试按此查询进行分组和排序,以便可以将它作为子查询加入到更大的查询中

SELECT * FROM `ggorderlog` 
WHERE `GGTITLE` LIKE '%Reklamation%' 
ORDER BY `GGDATE` DESC, `ggorderlog`.`GGORDERID` DESC 

这是ggorderlog表和上面查询的结果

GGTITLE     GGOXID    GGDATE             GGORDERID GGTITLE               User
Reklamation uniqueid1 2018.12.7 16:20:00 1         Reklamation created   Max Mustermann
Reklamation uniqueid2 2018.12.7 16:24:00 1         Reklamation finished  Maxine Musterfrau
Reklamation uniqueid3 2018.12.7 16:22:00 2         Reklamation created   Max mustermann

现在,我想要显示此表,以便对于每个GGORDERID,我只看到最新的条目。为了概述从事此工作的用户和故障单的状态。

赞:

GGTITLE     GGOXID    GGDATE             GGORDERID GGTITLE               User
Reklamation uniqueid2 2018.12.7 16:24:00 1         Reklamation finished  Maxine Musterfrau
Reklamation uniqueid3 2018.12.7 16:22:00 2         Reklamation created   Max mustermann

我尝试按顺序对标准分组进行排序,但是mysql似乎先对分组进行分组并给出随机列

我尝试过此操作,但它始终显示随机日期。

Select* from (
      Select *
      from ggorderlog as b 
      where GGTITLE like '%Reklamation%' 
      ORDER BY b.GGDATE DESC
) b2
  group by b2.GGORDERID 

我尝试了很多其他的建议,方法为left selfe或group_concat,然后再次解决,但似乎无济于事。

1 个答案:

答案 0 :(得分:0)

你可以试试吗?

SELECT gg.*
FROM ggorderlog gg
INNER JOIN
    (SELECT ggorderid, MAX(ggdate) AS maxggdate,oxid
    FROM ggorderlog
    GROUP BY ggorderid) groupedgg 
ON gg.oxid = groupedgg.oxid
AND gg.ggdate = groupedgg.maxggdate