gpt4 book ai didi

Mysql 选择多列并按单列分组

转载 作者:行者123 更新时间:2023-11-29 05:51:55 24 4
gpt4 key购买 nike

我在 mysql 中有一个表,我需要在其中显示列 UidCreatedDateAction_key 以及 Value,按操作键分组。

表:UsersOptStatus

enter image description here

预期结果:

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

enter image description here

下面是我尝试过的 - 这给了我所有的 Action_keys,但我需要根据最后一个(即 Desc)Created_date 显示最新的 Action_keys:

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

最佳答案

在派生表中,您正在做 Group Byuid .相反,您需要 Group Byaction_key得到 createddate 的最大值对于每个 action_key .

现在,您可以将此结果集加入到 action_key 上的主表中和 createddate .

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

SELECT uos.uid,
uos.value,
uos.action_key
FROM (SELECT action_key,
Max(createddate) AS maxcreateddate
FROM usersoptstatus
WHERE uid = 1607
GROUP BY action_key) A
INNER JOIN usersoptstatus AS uos
ON uos.action_key = A.action_key AND
uos.createddate = A.maxcreateddate
WHERE uos.uid = 1607
ORDER BY uos.id DESC;

关于Mysql 选择多列并按单列分组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53221611/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com