#mysql
#mysql
Вопрос:
Я хочу иметь запрос, который возвращает наилучшие результаты из таблицы.
Я определяю наилучшие результаты как добавление двух столбцов a b (каждый столбец содержит значение int)
ie:
entry a b
1 4 5
2 3 2
3 20 30
Будет возвращена запись 3, потому что a b является самым высоким в этом случае.
Есть ли способ сделать это? Одна из моих идей заключалась в том, чтобы создать еще один столбец в таблице, который содержит добавление a и b, а затем упорядочить по DESC, но это кажется немного запутанным.
Есть идеи? Спасибо!
Ответ №1:
SELECT *
FROM mytable
ORDER BY
a b DESC
LIMIT 1
Однако добавление другого столбца было бы хорошим вариантом, поскольку вы могли бы проиндексировать этот столбец, что улучшило бы запрос.
Комментарии:
1. Интересным вариантом было бы иметь столбец
a
и колонкуa b
, но неb
столбец. Затем вы бы извлекалиb
bya b - a
и не имели избыточности. Будут ли какие-либо серьезные последствия этого?2. @lasseespeholt: последствиями будет невозможность создать индекс на
b
, если он понадобится @op.