Перейти до

ORDER BY чим лікується


Рекомендованные сообщения

Вітаю.

SQL: SELECT * FROM table ORDER BY weight DESC;

Умова: в колонці weight (VARCHAR(3)) містяться данні: 10, 119, 290, 90.
Результат: 90,290,110,10.

Питання: Чому виводиться 90 як найбільше значення? Логічно, що воно так працює, але яким чином змусити рахувати по загальній сумі комірки? Дякую

Відредаговано testinua
Ссылка на сообщение
Поделиться на других сайтах

нафіга інти тримати в чарі ? - це взагалі то і відповідь на питання ....

що значить "змусити рахувати по загальній сумі" ????? про які суми взагалі мова йде якщо тут проста вибірка з сортуванням ?

Відредаговано Lynx100
Ссылка на сообщение
Поделиться на других сайтах

Лечится пересадкой рук проектировщику БД из жопы на место.

Смените тип значения в колонке weight на инт и все будет вэри гуд.

А сейчас БД сортирует поле как текст.

Ссылка на сообщение
Поделиться на других сайтах
Если сделать костылём, то должно помочь

SELECT * FROM table ORDER BY CAST(weight AS int) DESC;

 

Но тогда индекс поля weight (если таковой существует) работать не будет.

Відредаговано Phsm
Ссылка на сообщение
Поделиться на других сайтах

стоило бы не забыть предупредить ТС о том, что все неинтовые данные будут похерены в таком случае...

Да-да-да)

Нужно ветку по программированию на форуме открывать...

Ссылка на сообщение
Поделиться на других сайтах

стоило бы не забыть предупредить ТС о том, что все неинтовые данные будут похерены в таком случае...

да, забыл об этом упомянуть...

учитывая ситуацию ТСа добавлю, что для пробы лучше проверить все предварительно на тестовом стенде, малоли что там ещё разработчик к этому полю завязал и с какой целью

после alter сразу же и ошибки посмотреть, если какие-то данные "не влезли" в INT, то нужно будет копать глубже и разбираться.. а вообще лучше обратиться к автору... строковый "вес" вполне может оказаться или костыль или печаль...

Ссылка на сообщение
Поделиться на других сайтах
Опубліковано: (відредаговано)

Скільки відповідей. Знаю, що тип таблиці не отпимізований, але як вже є... Думаю зробити скриптом сортування після виборки, але це костиль, а не рішення... ЦМС самопал і це є проблема. Думав, що можна і VARCHAR змусити рахувати не по першому числу (чи іншому при збігу перших)...

Den_LocalNet

так і є, якщо зміни тим - то все що не INT буде в дупі, а мені ці приколи і гемор не потрібен.

 

Якщо додати індекси: CREATE INDEX weight ON table(weight);

 

чи не будуть вилазити якісь косяки в результаті? А потім використати сортування по індексам - чи має життя такий варіант? 

Відредаговано testinua
Ссылка на сообщение
Поделиться на других сайтах

лишний индекс не завалит ничего сам по себе, но сортировка силами субд в Вашем случае всегда будет работать именно так, как она сейчас работает и индексы этого не изменят

вариант с order by CAST(weight as SIGNED) asc, как выше рекомендовали уже, частично решит проблему, но если там кроме целочисленных что-то ещё есть - оно при сортировке будет рассматриваться как null (если не ошибаюсь) и результаты будут не совсем такие, как ожидаются.. и да, при cast индекс не будет использоваться

Відредаговано astraliens
Ссылка на сообщение
Поделиться на других сайтах

 

дійсно, індекси всеодно дадут те й результат. В комірках присутні виключно числові значення, але вони всі з плавоючою комою. Якщо перевести тип в DEC - чи не вирішить це цю проблему? а потім на виході при потребі різати числа після коми, наприклад зробити DEC(3,5)? Так данні не пошкодяться теоретично, і теоретично сортування sql буде таким як треба?
Ссылка на сообщение
Поделиться на других сайтах

 

оцените какова максимальная точность нужна для ваших целей и переведите в decimal, который будет приемлем

рекомендую сделать дамп предварительно и в отдельную базу залить его, потренироваться там, а потом уже только в проде что-либо менять

в этом варианте и сортировка будет корректно работать и индексы

Ссылка на сообщение
Поделиться на других сайтах
Опубліковано: (відредаговано)

...

Да, так і буду робити - це найбільш раціональне рішення. Дякую всім на поради :-) Відповідь легше знайти в мозговому штурмі.

 

А ще питання до Lynx100 - навіщо було -1 ставити? Ненавиджу таких людей, дарма немає такої функції, як бан персони на тему.

Відредаговано testinua
Ссылка на сообщение
Поделиться на других сайтах

 

...

Да, так і буду робити - це найбільш раціональне рішення. Дякую всім на поради :-) Відповідь легше знайти в мозговому штурмі.

 

А ще питання до Lynx100 - навіщо було -1 ставити? Ненавиджу таких людей, дарма немає такої функції, як бан персони на тему.

 

можливо для того щоб дурних питань, ідей і ненависті до незнайомих людей менше було ?   :D Сумно коли людина не спромоглася освоїти елементарні базові поняття SQL і СУБД, хоча б для того щоб задати нормальне питання або не задавати дурні питання, ненавидить людей за щось що вона сама  не може второпати ....

 

взагалі-то  не зациклюйтеся .... отримувати мінуси не смертельно! з часом у вас їх буде  менше  .... все залежить в першу чергу від вас....  ;) ... Чи не так , наш ідейний  мізантроп ? .. намінусував достатньо розумник?

Відредаговано Lynx100
Ссылка на сообщение
Поделиться на других сайтах

 

...

Да, так і буду робити - це найбільш раціональне рішення. Дякую всім на поради :-) Відповідь легше знайти в мозговому штурмі.

 

А ще питання до Lynx100 - навіщо було -1 ставити? Ненавиджу таких людей, дарма немає такої функції, як бан персони на тему.

 

Считайте это тестом на "шко-ло-ло головного мозга".

Если пукан подгорает за "-1" на форуме значит вы еще психологически не готовы к общению в интернете :) :) :)

Ссылка на сообщение
Поделиться на других сайтах

Считайте это тестом на "шко-ло-ло головного мозга".

Если пукан подгорает за "-1" на форуме значит вы еще психологически не готовы к общению в интернете :) :) :)

 

дарма ви  розкидуєте бісер перед свинею .....  ось що воно в приват вміє виписати :))))) ось воно справжнє лице невизнаного і невпізнаного  генія!!!!!! , а ви кажете  :))))) Розум у вас не доріс, до розвинутої і немізерної людини :))))) Одним словом це треба бачити самому .... трамтарарам. .... алеееее оп ....

 

 

воно раз видало це :

 

Спілкуватись з гівном я не бажаю. Твій розум ще не доріс до того, щоб оцінювати життя в такому руслі, в якому воно йде. По суті ти людина мізерна, нерозвинута. Ти робиш те, що робили тобі - це задаток твого куриного мозку. Створи ще 10 акаунтів і натикай мені мінусів.

До того ж, "шко-ло-ло" пишуть тільки діти або дорослі з дитячим розвитком. А це ти. Твої познання в SQL такі великі, що навіть про DEC не зміг підсказати? пугало й очконавт - от твій психологічний портрет.

 

потім ссиканувшиодумалося і виправило на

 

 

Твій розум ще не доріс до того, щоб оцінювати життя в такому руслі, в якому воно йде. 

 

Твої познання в SQL такі великі, що навіть про DEC не зміг підсказати? самовпевненf, морально скривджена людина  - от твій психологічний портрет.

 

 

Вдумайтеся в глибину слів "Твій розум ще не доріс до того, щоб оцінювати життя в такому руслі, в якому воно йде" - в цитатник однозначно :facepalm:

 

testinua давай дальше віджигай :)) ... бомбани ще щось :)) ну щоб поржати... а ну і далі продовжуй ритися в моєму рейтингу і істерично мінусувати :)))) ....

 

Я з твого дозволу і надалі буду  твої послання до народу викладати... ну щоб генія могли признати :))))

 

giphy.gif

Відредаговано Lynx100
Ссылка на сообщение
Поделиться на других сайтах
Опубліковано: (відредаговано)

Пишіть, це все що вам дано, але коли розум не сформувався при народженні - цього не виправити.

2016_02_06_023239.jpg

Відредаговано testinua
Ссылка на сообщение
Поделиться на других сайтах

Пишіть хоч 100 повідомлень, але коли розум не сформувався при народженні - цього не виправити.

<a href='<a data-ipb="nomediaparse" data-cke-saved-href="http://postimg.org/image/iwa65651d/"href="http://postimg.org/image/iwa65651d/" src='http://s24.postimg.org/iwa65651d/2016_02_06_023239.jpg' border='0' alt="2016 02 06 023239" /></a>

а чо так слабо?

запал генія всох ? давай ще :))) повесели людей

Відредаговано Lynx100
Ссылка на сообщение
Поделиться на других сайтах

"программист" делавший базу явный "программист". 

Или dec() или int() других вариантов не дано.

 

 

 

Пишіть хоч 100 повідомлень, але коли розум не сформувався при народженні - цього не виправити.
<a href='<a data-ipb="nomediaparse" data-cke-saved-href="http://postimg.org/image/iwa65651d/"href="http://postimg.org/image/iwa65651d/" src='http://s24.postimg.org/iwa65651d/2016_02_06_023239.jpg' border='0' alt="2016 02 06 023239" /></a>

а чо так слабо?
запал генія всох ? давай ще :))) повесели людей

 

что ты к человеку пристал? 

 

Ветка программирования явно на форуме не помешает.

Ссылка на сообщение
Поделиться на других сайтах

Или dec() или int() других вариантов не дано.

Я конечно не знаю как у вас с инт получается но вот такая конструкция будет работать (т.е. без конвертации в таблице типа поля)

select cast(t0 as dec(5,3)) as e from t order by e

но с индексами будет печаль т.к. будет использоваться filesort

 

mysql> explain select cast(t0 as dec(5,2)) as e from t order by e;

+----+-------------+-------+-------+---------------+------+---------+------+------+-----------------------------+

| id | select_type | table | type | possible_keys | key | key_len | ref | rows | Extra |

+----+-------------+-------+-------+---------------+------+---------+------+------+-----------------------------+

| 1 | SIMPLE | t | index | NULL | ti | 13 | NULL | 8 | Using index; Using filesort |

+----+-------------+-------+-------+---------------+------+---------+------+------+-----------------------------+

 

по хорошему конечно надо изменить тип поля.... сделать индекс по полю новому ... что и было сказано раньше

 

что ты к человеку пристал?

это я пристал ?

чела очень интересовало почему минус, потом начал срать мне а ПМ какой-то больной шизой... по ходу истерично лазит в рейтингах и минусит в тех темах которые даже не читал ... и я пристал :)... прикольно

Відредаговано Lynx100
Ссылка на сообщение
Поделиться на других сайтах

Пишіть, це все що вам дано, але коли розум не сформувався при народженні - цього не виправити.

2016_02_06_023239.jpg

Это точно! Если розум не сформировался для того что бы почитать хотябы про мускуль, если им пользуешся - это тяжело исправить

Ссылка на сообщение
Поделиться на других сайтах

Создайте аккаунт или войдите в него для комментирования

Вы должны быть пользователем, чтобы оставить комментарий

Создать аккаунт

Зарегистрируйтесь для получения аккаунта. Это просто!

Зарегистрировать аккаунт

Вхід

Уже зарегистрированы? Войдите здесь.

Войти сейчас
  • Зараз на сторінці   0 користувачів

    Немає користувачів, що переглядають цю сторінку.

  • Схожий контент

    • Від felixio_01
      Здравствуйте. 
      Помогите разобраться. 
      Собрал stargazer 2.409
      ОС debian 11:  Linux gw1new 5.10.0-13-amd64 #1 SMP Debian 5.10.106-1 (2022-03-17) x86_64 GNU/Linux
      MySQL:  /usr/sbin/mysqld  Ver 8.0.28 for Linux on x86_64 (MySQL Community Server - GPL)
      при первом запуске в в логах stargazer появилась ошибка:  Storage plugin: 'Couldn't create tariffs table list With error: Invalid default value for 'change_policy_timeout''  
      При этом создалась таблица:  ' admins'
      mysql> show tables;
      +---------------+
      | Tables_in_stg |
      +---------------+
      | admins        |
      | info          |
      +---------------+
      2 rows in set (0.00 sec)
       
      Других таблиц нет. 
      В чём может быть проблема? Может кто сталкивался?
      Спасибо. 
    • Від dormancygrace
      Добрый день. Скажите пожалуйста, можно ли развернуть бэкап бд mysql в mariadb? при попытке получаю ERROR 1071 (42000) at line 845: Specified key was too long; max key length is 1000 bytes.
      Можно это как-то вылечить? 
    • Від camchatix
      Привет!
       
      Начались необъяснимые глюки с базой ubilling
      сделали mysqldump на старой базе 5.6.36
      На свежей freebsd mysql server 5.6.51
      сделали импорт - и в карточке при обновлении страницы баланс показывает то одну цифру то другую
       
      подскажите как такое может быть и как вылечить ?
       
      вот -126 денег это правильно
       
      mysql> select login,D0,U0,Cash, LastCashAddTime   from users where login=65369051; +----------+------------+------------+---------+-----------------+ | login    | D0         | U0         | Cash    | LastCashAddTime | +----------+------------+------------+---------+-----------------+ | 65369051 | 3619373056 | 4680515584 | -126.07 |      1634677205 | +----------+------------+------------+---------+-----------------+ 1 row in set, 1 warning (0.00 sec)  
      через 3 минуты
      mysql> select login,D0,U0,Cash, LastCashAddTime from users where login=65369051; +----------+------------+------------+-------+-----------------+ | login | D0 | U0 | Cash | LastCashAddTime | +----------+------------+------------+-------+-----------------+ | 65369051 | 3555340288 | 3879243776 | 36.61 | 1634677203 | +----------+------------+------------+-------+-----------------+ 1 row in set, 1 warning (0.00 sec)  
      а тут 36 денег
      Как такое может быть ?
       
       
       
       
    • Від freehost
      В крупную хостинг-компанию требуется сотрудник службы технической поддержки.
       
      Обязанности:
      Отвечать на вопросы клиентов (работа с панелью управления, настройка POP3, SMTP, FTP, другие технические вопросы) по телефону, эл. почте, решать мелкие проблемы (неверно заполненные данные и настройки в контрольной панели, проблемы с доступом и т. п.), не сложные вопросы касающиеся администрирования, подключение IPKVM, перезагрузка серверов.
       
      Требования:
      Умение работать в Интернет с основными клиентами (браузеры: IE и Mozilla, почтовые клиенты: The bat, outlook, FTP-клиенты: IE, Far, Cute FTP; Базовые знания PHP, MySQL; Уметь читать и понимать логи Apache, Nginx, Exim Приветствуется опыт работы в Web-Дизайне, работа с Joomla, Wordpress Навыки работы в командной строке UNIX; Желателен опыт работы с VestaCP, ISPmanager Коммуникабельность, терпение, эмоциональная уравновешенность, способность к обучению.  
      Условия:
      Официальное трудоустройство 24 дня отпуска Обеды за счет компании Сменный график. Смена сутки, потом три дня выходных. Оплачиваемый больничный Возможность повышения до дежурного администратора. Работа в дата-центре (в случае локдаунов предусмотрена развозка сотрудников)
        Работа в дата-центре это возможность получить опыт работы с различными технологиями (apache, nginx, mysql, zabbix, wordpress, joomla, dns…), а так же опыт работы с железной частью серверов.
      Если нету опыта работы с Unix, резюме просьба не присылать.

      Резюме присылайте на hr@freehost.com.ua
    • Від zababaha
      Здравствуйте.
      В связи с миграцией с Nodeny 50.32 на Nodeny Plus необходимо перенести базу данных +возможно, написать скрипт для автоматического переноса её в будущем еще раз.

      Просьба откликнуться в личку.
×
×
  • Створити нове...