回答

收藏

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

技术问答 技术问答 229 人阅读 | 0 人回复 | 2023-09-13

我想做的就是选择max(f1,f2,f3)。我知道这是行不通的 ,但是我想我想要的应该很清楚 (请参阅更新1)。
" ~/ ?" j$ v7 b/ Q6 I1 G3 Z+ [我当时在考虑选择select max(concat(f1,’-‘,f20 z) m) B0 K1 i
…)),但这有很多缺点。特别是,执行concat可能会减慢速度。得到我想要的最好的方法是什么?8 o( m8 l( X1 i' m1 o* `1 h7 {
更新1:到目前为止,我得到的答案不是我要的。max处理一组记录,但是只使用一个值比较它们;我希望max考虑多个值,就像order+ y" J5 @% ^; R
by可以考虑多个值的方式一样。
$ ?  W: V* G1 ?更新2:假设我有下表:
+ h; }9 W9 @# @' I" aid class_name order_by1 order_by_2+ W* f1 T- `/ Q& c, {
1          a         0          0
$ N/ i! n" X, p6 N2 v 2          a         0          1
. |! F/ [( ~2 _; ^/ D) f) q( b# { 3          b         1          0
$ S+ f4 s8 A; Z% W 4          b         0          90 s9 p5 T: q5 e/ h6 P* q1 g! Y
3 n, g3 c2 [+ j- h
我想要一个按class_name对记录进行分组的查询。然后,在每个“类”中,选择先order_by1升后order_by2降先排序的记录。结果集将由记录2和3组成。在我神奇的查询语言中,它看起来像这样:
9 {, a# y6 t% V" H3 pselect max(* order by order_by1 ASC, order_by2 ASC)
7 i& s3 N" A4 r  U$ hfrom table! ^7 e7 K  b+ g! ^4 ?
group by class_name' G' C( ^3 H. z% |4 Y6 W4 N
               
, s; F1 }, `( v+ D+ N. F$ q0 l解决方案:
$ ^: P0 ]/ W# |8 a% o' X$ K" F$ t                & f& b; S  o$ i2 y
% n4 @; f- M; U6 k/ P$ D
9 O, v9 W8 C, H
                根据我对另一个问题的回答:SQL-SELECTMAX()及其伴随字段: H, p. I5 w. ]7 a5 r3 Y+ y
要使其适用于多列,请将更多列添加到内部选择的ORDER BY中。
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则