Я новичок в 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. Использование вышеуказанного способа решения проблемы было бы очень уродливым. Так есть лучший способ решить проблему?
Попробуйте использовать функции 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
Но, честно говоря, версия, которую вы сейчас имеете, почти такая же краткая, как и то, что я написал выше.