Можете ли вы добавить оператор if в ORDER BY?

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

Вы можете сделать это, используя время ресурса апи. В частности, для этой цели могут быть использованы свойства transferSize, encodedBodySize и decodedBodySize.

Посмотрите мой ответ здесь для фрагмента кода и дополнительной информации, если вы ищете: JavaScript - получить размер в байтах из HTML img src

34
задан danijar 23 July 2013 в 09:07
поделиться

2 ответа

Ну, вы можете использовать IF функцию в MySQL (Обратите внимание на акцент на функцию, так как есть еще и несвязанный IF оператор)... :

ORDER BY IF(TYPE='Member', LNAME, GROUPNAME) ASC

Однако в данном случае, похоже, лучшим выбором (с точки зрения гибкости) будет CASE оператор:

ORDER BY 
    CASE `type` 
        WHEN 'Member' THEN LNAME 
        WHEN 'Group' THEN GROUPNAME
        ELSE 1 END 
    ASC

Обратите внимание, что весь блок от CASE до END должен рассматриваться как единый "блок". Результат которого является тем, что вы пытаетесь отсортировать (Отсюда следует, почему ASC идет после блока, а не внутри него)...

65
ответ дан 27 November 2019 в 06:52
поделиться

Используйте оператор CASE.

Пример из http://dev.mysql.com/doc/refman/5.0/en/control-flow-functions.html:

SELECT id, first_name, last_name, birthday
FROM table
ORDER BY
-- numeric columns
CASE _orderby WHEN 'id' THEN id END ASC,
CASE _orderby WHEN 'desc_ id' THEN id END DESC,
-- string columns
CASE _orderby WHEN 'first_name' THEN first_name WHEN 'last_name' THEN last_name END ASC,
CASE _orderby WHEN 'desc_first_name' THEN first_name WHEN 'desc_last_name' THEN last_name END DESC,
-- datetime columns
CASE _orderby WHEN 'birthday' THEN birthday END ASC,
CASE _orderby WHEN 'desc_ birthday' THEN birthday END DESC;
11
ответ дан 27 November 2019 в 06:52
поделиться
Другие вопросы по тегам:

Похожие вопросы: