qant
@qant
programer

Почему результаты max() не верные (mysql)?

Есть таблица с полями

meta_id, post_id, meta_key, meta_value

Значения meta_value такие:
5247
5205
4028
3176
2123
2119
2119
2006
12800
12424
и тп... до 70000
нужно вывести самое большое из диапазона между от 1000 и 30000.

Создаю запрос

SELECT 
    max(meta_value)
FROM
    postmeta
WHERE
    meta_key = 'property_id'
        AND meta_value BETWEEN 1000 AND 30000;


При выполнении запроса выдает неверное значение...
Выводит 5247 вместо 13366 *(я глазами пролистал и вижу что это последнее значение)

* Если укажу диапазон так BETWEEN 10000 AND 30000; то выводит верное (13366)

Почему так? Поясните если не сложно, спасибо!
  • Вопрос задан
  • 67 просмотров
Решения вопроса 1
qant
@qant Автор вопроса
programer
В итоге что бы отсортировать подобную таблицу нагуглил и применил такой хак

(meta_value * 1) <-- это преобразует строку 12345 в число, и сортировка работает правильно.

SELECT distinct
    meta_value
FROM
    postmeta
WHERE
    meta_key = 'property_id'
        AND meta_value BETWEEN 1000 AND 30000
        ORDER BY (meta_value * 1) DESC;
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы