MYSQL почему min будет больше, чем max? - PullRequest
0 голосов
/ 27 июля 2010
select min(lead), max(lead)
from products 
WHERE part_line != 90 and category = 'x'

Когда я запускаю вышеупомянутый запрос, возвращаемая минимальная больше максимальной.Если я уберу условие pline! = 90, проблема исчезнет.

Сначала я думал, что mysql обрабатывал min, max до того, как он достиг pline ... но это не объясняет, почему он назначил бы более высокий min.

Что мне дает, когда я получаю avg (), он вычисляется правильно.

Что происходит?

Ответы [ 2 ]

8 голосов
/ 27 июля 2010

Возможно, ваши поля обрабатываются как текст, поэтому, например, 21 будет наименьшим, чем 3 (в алфавитном порядке). Если эти поля имеют тип TEXT, попробуйте привести значения к INT ()

0 голосов
/ 27 июля 2010

Вот пример сервера sql:

with Test_CTE (first, second, third)
as(
    select '21 ', 'b', 1
    union
    select '3  ', 'd', 2
)
select MIN(first) as Minimum, MAX(first) as Maximum 
from Test_CTE

вывод

Minimum Maximum
21      3  

Обратите внимание, что значения представляют собой текстовые данные с конечными пробелами, поэтому причина их сортировки отличается от того, как вы могли бы ожидать.

...