我想做的就是选择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
我想要一个按class_name对记录进行分组的查询。然后,在每个“类”中,选择先order_by1升后order_by2降先排序的记录。结果集将由记录2和3组成。在我神奇的查询语言中,它看起来像这样:
order_by1
order_by2
select max(* order by order_by1 ASC, order_by2 ASC) from table group by class_name
根据我对另一个问题的回答:SQL-SELECTMAX()及其伴随字段
要使其适用于多列,请将更多列添加到内部选择的ORDER BY中。