gpt4 book ai didi

sql - 在 SQL 中选择多个字段的最大值的最佳方法是什么?

转载 作者:行者123 更新时间:2023-12-05 08:44:47 24 4
gpt4 key购买 nike

我想做的是选择 max(f1, f2, f3)。我知道这行不通 ,但我认为我想要的应该很清楚 (请参阅更新 1)。

我正在考虑执行 select max(concat(f1, '--', f2 ...)),但这有很多缺点。特别是,执行 concat 可能会减慢速度。获得我想要的东西的最佳方式是什么?

更新 1:到目前为止我得到的答案并不是我想要的。 max 处理一组记录,但它只使用一个值对它们进行比较;我想让max考虑几个值,就像order by的方式可以考虑几个值。

更新 2:假设我有下表:

id class_name order_by1 order_by_2 1          a         0          0 2          a         0          1 3          b         1          0 4          b         0          9

我想要一个按类名对记录进行分组的查询。然后,在每个“类”中,如果您按 order_by1 升序然后按 order_by2 升序排序,则选择最先出现的记录。结果集将包含记录 2 和 3。在我神奇的查询语言中,它看起来像这样:

select max(* order by order_by1 ASC, order_by2 ASC)from tablegroup by class_name

最佳答案

Select max(val)
From
(
Select max(fld1) as val FROM YourTable
union
Select max(fld2) as val FROM YourTable
union
Select max(fld3) as val FROM YourTable
) x

编辑:另一种选择是:

SELECT
CASE
WHEN MAX(fld1) >= MAX(fld2) AND MAX(fld1) >= MAX(fld3) THEN MAX(fld1)
WHEN MAX(fld2) >= MAX(fld1) AND MAX(fld2) >= MAX(fld3) THEN MAX(fld2)
WHEN MAX(fld3) >= MAX(fld1) AND MAX(fld3) >= MAX(fld2) THEN MAX(fld3)
END AS MaxValue
FROM YourTable

关于sql - 在 SQL 中选择多个字段的最大值的最佳方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1183097/

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