1

我有一个带有 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 框架方式(或至少是 SQL 查询)来做到这一点?

4

2 回答 2

2

使用 SQL,您可以像...

如果您在 url 字段上也允许空值,它会变得有点难看。

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

这基本上检查 url 长度是否大于零或为空。如果是,则它们位于排序的底部。

于 2009-12-16T13:30:06.480 回答
0

您可以order by field('field_name', value) desc在 select 语句中使用。

于 2010-05-12T15:17:33.040 回答