Как отсортировать по полю с числом от большего к меньшему, а если встречаем число 0 то как поставить это в конец сортировки? Или же лучше сразу добавлять в базу с максимальным значением, скажем 999999(вместо нуля)?
буквально в лоб задачу решить можно через всякие условные функции. но это ставит крест на использовании индекса. что-то типа Код (Text): … ORDER BY IF(x=0, 99999999, x) если таблица маленькая, то индекс вам всё равно ничего не даст, можно не париться. а на больших данных может оказаться, что выгоднее взять две выборки: для =0 и для <>0 и склеить их по UNION ALL пробуйте. http://www.mysql.ru/docs/man/Control_flow_functions.html https://stackoverflow.com/questions/3531251/using-union-and-order-by-clause-in-mysql
а зачем?? если мы сортируем от большего к меньшему то нули всегда в конце же будут?? или я что то не так понял в условии?))
1) автор сформулировал криво, но суть понятна - "сортировка не по порядку". такое хочется когда 0 служит признаком "не задано", т.е. как бы вместо null 2) формально ты прав. но да, ты не понял
А если нужно отсортировать от меньшего к большему, то как быть с "0" ? Если использовать null вместо "0" то это поможет чтобы данные с null были в конце при сортировке?
PHP: SELECT * from `table` WHERE rate <> 0 UNION ALL SELECT * from `table` WHERE rate = 0 При таком запросе индексы будут работать? Намного ли запрос будет медленнее если сравнивать с PHP: SELECT * from `table` ORDER BY rate ASC?
твои вопросы подсказывают, что ты не тупо готов это воспринять ))) 1. данных должно быть много, чтобы эта возня вообще имела смысл 2. "будут ли работать" — а они вообще есть у тебя, для начала? 3. в верхнем запросе тоже должен быть order by 4. union all не сортирует, он просто добавляет строки в результат. сумма быстрых выборок может оказаться быстрее чем одна тормозная выборка. в этом суть трюка. вообще "будет/не будет" зависит от многих факторов. я только указал один из них. с условной функцией скорее всего НЕ будет. склейка выборок это обходное решение. понял? --- Добавлено --- [offtopic] каждый раз смешно, когда нуб вместо того, чтобы озаботиться решением задачи, фокусируется на ускорении. дружок, надо сначала добиться, чтобы было чего ускорять! [/offtopic]