gpt4 book ai didi

mysql - SELECT MAX CASE 问题

转载 作者:行者123 更新时间:2023-11-29 15:50:23 25 4
gpt4 key购买 nike

在我的数据库中,我有影响它们的操作和里程碑。我需要评估一个操作里程碑类型,它是一个文本字段,然后根据该值获取最大值及其 id。让我们假设 operation.id = 1 来简化。

在我的里程碑表中

id | type   | operation_id
1 | 'Ori' | 1
2 | 'Lib' | 1
3 | 'Desc' | 1

我尝试过:

SELECT m.id,
MAX(CASE
WHEN m.type = 'Ori' THEN 0
WHEN m.type = 'Trans' THEN 1
WHEN m.type = 'Arriv' THEN 2
WHEN m.type = 'Ofic' THEN 3
WHEN m.type = 'Lib' THEN 4
WHEN m.type = 'Ret' THEN 5
WHEN m.type = 'Desc' THEN 6
WHEN m.type = 'Dev' THEN 7
END) val
FROM milestone m WHERE m.operation_id = 1

我期望得到什么:

id | val
3 | 6

我得到了什么:

id | val
1 | 6

如果我添加到我的查询中:GROUP BY m.id

我得到:

id | val
1 | 0
2 | 4
3 | 6

我知道我可以通过 val 对其进行排序,然后将结果限制为 1,但这不是我想要的。

最佳答案

您可以使用:

SELECT *
FROM milestone m
WHERE m.operation_id = 1
ORDER BY
(CASE
WHEN m.type = 'Ori' THEN 0
WHEN m.type = 'Trans' THEN 1
WHEN m.type = 'Arriv' THEN 2
WHEN m.type = 'Ofic' THEN 3
WHEN m.type = 'Lib' THEN 4
WHEN m.type = 'Ret' THEN 5
WHEN m.type = 'Desc' THEN 6
WHEN m.type = 'Dev' THEN 7
END) DESC
LIMIT 1

关于mysql - SELECT MAX CASE 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56796050/

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