Вопрос

У меня есть база данных со столбцом VARCHAR. url.Я хотел бы получить строки, чтобы те, которые имеют какие-либо url значения имеют приоритет над другими строками, но упорядочены по date ряд (по убыванию), поэтому ORDER BY 'url' DESC, 'date' DESC не будет работать, поскольку сначала они будут упорядочены в алфавитном порядке.В принципе, это будет выглядеть примерно так:

Стол:

ID   |    Url    | Date
1    | http://...| 1001
2    |           | 1002
3    |           | 1003
4    | http://...| 1005
5    | http://...| 1004

Сортировано:

ID   |    Url    | Date
4    | http://...| 1005
5    | http://...| 1004
1    | http://...| 1001
3    |           | 1003
2    |           | 1002

Каков был бы правильный способ Zend Framework (или, по крайней мере, SQL-запрос) для этого?

Это было полезно?

Решение

С помощью SQL вы могли бы что-то вроде...

Это становится некрасиво, если вы также разрешаете нулевые значения в поле URL.

SELECT * , IF(LENGTH(url) = 0 OR url IS NULL, 1, 0) AS nourl 
FROM url ORDER BY nourl ASC

По сути, это проверяет, больше ли длина URL-адреса или равна нулю.Если да, то они находятся в самом низу сортировки.

Другие советы

Вы могли бы использовать order by field('field_name', value) desc в операторе выбора.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top