Иерархический Макс

Есть ли способ получить строку, которая имеет MAX(), когда рассматриваются два поля, давая одному из них приоритет. Например

ID     Column_A     Column_B
----------------------------
1        1              3
2        3              2
3        2              2
4        3              1

Вернется

ID     Column_A     Column_B
----------------------------
2        3              2

Потому что оба идентификатора 2 и 4 являются MAX на Column_A, но #2 "выигрывает" на Column_B.

Что бы я хотел, чтобы этот запрос делал в псевдокоде:

If (It's the MAX on A, tied with nothing)
  Return it
Else If (It's tied for MAX on A and it's MAX [or tied] on B)
  Return it

1 ответ

Решение

Вы могли бы попробовать...

SELECT *
    FROM mytable
    ORDER BY Column_A DESC, Column_B DESC
    LIMIT 1;

(если я правильно понял вопрос).

Отредактировано, как любезно предложил Мэтью Пурдон.

Другие вопросы по тегам