MySQL选择多列并按单列分组

时间:2018-11-09 07:42:52

标签: mysql

我在mysql中有一个表,其中需要显示按Uid分组的列CreatedDateAction_keyValueaction key。 >

表: UsersOptStatus

enter image description here

预期结果:

我需要按desc CreatedDate排序并显示最新的Action_keys

enter image description here

下面是我尝试过的-这给了我所有的Action_key,但是我需要根据上次创建的日期(即Desc)显示最新的Action_key:

SELECT uid,
       action_key,
       value,
       Max(createddate) CreatedDate
FROM   usersoptstatus
WHERE  uid = 1607
GROUP  BY action_key,
          value;

Output:

即使以下查询没有给我 Expected Result

SELECT uid,
       value,
       action_key
FROM   (SELECT uid,
               Max(createddate) CreatedDate
        FROM   usersoptstatus
        GROUP  BY uid) A
       INNER JOIN usersoptstatus USING (uid, createddate)
WHERE  uid = 1607
ORDER  BY id DESC; 

enter image description here

1 个答案:

答案 0 :(得分:2)

在“派生”表中,您正在Group By上进行uid。相反,您需要在Group Byaction_key才能获得每个createddate的{​​{1}}的最大值。

现在,您可以将此结果集连接到action_keyaction_key上的主表中。

此外,我更喜欢基于createddate的基于子句的联接,而不是ON或基于老式逗号的隐式联接。

Using