GD Star Rating
loading...

Господа! [MySQL]

То ли лыжи не едут, то ли я переработал:
SELECT GREATEST(‘2,1’);

Именно в кавычках! Т.е. ‘2,1’ я выбираю из VARCHAR

Tagged with →  

14 Responses to SELECT GREATEST(‘2,1’);

  1. DaBYes:

    ну и, конечно же, надо получить 2

  2. Asaed:

    По-нормальному – никак, ибо не кошерно. Делай на клиенте.

  3. DaBYes:

    не выйдет. Выборка по фильтрам, где надо выбрать из VARCHAR ‘x,y,z,…’ бОльший

  4. DaBYes:

    да, забыл: суть в том, что выборка идет по сотням(!) значений (в виду того, что это фильтры по инет-магазину – примерно как в яндекс-маркете), поэтому надо это сделать именно на уровне базы

  5. Asaed:

    Опиши задачу полностью. Пока не очень понятно, зачем тут денормализация, вместо many-to-many на таблицу свойств.

  6. Samko:

    Согласен, к тому же тормозить текущее решение будет очень сильно.

  7. Ocgmo:

    мне досталась база, в которой в varchar поле хранились такие данные: 11|23|145|451

    надо было делать выборку записей, содержащих только например 23

    на скорую руку изъебнулся так:

    SELECT *
    FROM tablename WHERE
    CONCAT(“|”, fieldname, “|”) LIKE “%|23|%”

    ну на самом деле немного не так, там еще костыль был позорный, на случай если разделителя | слева или справа нет.
    если запросов меньше 20-30 в секунду, то на 5-долларовом шаред хостинге эта шняга вполне себе крутилась
    ну а вообще такую БД нормализовать надо ясен пень

  8. XibaTa:

    последовательность действий:

    1) найти того, кто это сделал, и оторвать руки и ноги

    2) переделать

  9. 90501:

    Пишешь stored procedure. Десять минут чтения документации и простой sort алгоритм по вашему выбору.

    профит.

    Добавляешь к вашему sp функцию update и переписываешь все поля с сортировкой.

    Рефакторишь базу

  10. 90501:

    писать за тебя не буду, могу на t-sql, MySQL нету под рукой.

  11. Ocgmo:

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

  12. KriLt:

    Эти числа, что в строке через запятую, есть где в базе?

  13. Dalin:

    SET @a = ‘6,3,6,9,3,7’;
    SET @a = CONCAT(‘SELECT GREATEST(‘, @a, ‘)’);
    PREPARE st FROM @a;
    EXECUTE st;
    парсер, жги

Добавить комментарий