Как найти записи из MySQL, где только часть полей соответствует условиям?

0

Я новичок в MySQL, и я застрял в следующей проблеме. У меня есть таблица, и в ней есть 3 поля числового значения. Я называю их A, B и C. Я хочу найти записи, где есть как минимум два значения> 60. Один из способов решения проблемы -

SELEC * FROM table WHERE (A>60 AND B>60) OR (A>60 AND C>60) OR (B>60 AND C>60) OR (A>60 AND B>60 AND C>60)

Но я не думаю, что это изящный способ. Существует только 3 значения. Если в таблице 10 или 20 полей значений, и я также хочу найти записи, где есть как минимум два значения> 60. Использование вышеуказанного способа решения проблемы было бы очень уродливым. Так есть лучший способ решить проблему?

Теги:

1 ответ

1

Попробуйте использовать функции GREATEST и LEAST:

SELECT *
FROM yourTable
WHERE
    GREATEST(A, B, C) > 60 AND                              -- largest value
    (A + B + C) - GREATEST(A, B, C) - LEAST(A, B, C) > 60;  -- 2nd largest value

демонстрация

Но, честно говоря, версия, которую вы сейчас имеете, почти такая же краткая, как и то, что я написал выше.

  • 1
    Привет Тим, ты знаешь, есть ли предел элементов, которые будут использоваться в этих функциях? Там нет упоминания об этом в DOCs. Отличный ответ, хотя +1
  • 1
    @JorgeCampos Хороший вопрос, он, безусловно, работает для 3 аргументов, и документация MySQL приводит пример с 5. Помимо этого, я не знаю.
Показать ещё 4 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню