按“count(列不为空)”排序

时间:2011-02-20 06:06:00

标签: mysql count sql-order-by

我正在研究一种通过计算值不为空的列来对MySQL结果进行排序的方法。因此,

[id] [1] [1] [0] [1] [1] = 4

[id] [0] [1] [1] [1] [0] = 3

[id] [0] [0] [0] [1] [1] = 2

[id] [1] [0] [0] [0] [0] = 1

在上述情况下,我忽略了ID列,但在实践中我并不在意。 ID始终为NOT NULL,因此将其添加到count中不会更改结果。

任何人都对此有任何想法,不涉及对结果进行PHP解析到新数组?我正在尝试将处理部分保持在数据库级别。

1 个答案:

答案 0 :(得分:5)

ORDER BY IF(`a` IS NULL, 0, 1) + IF(`b` IS NULL, 0, 1) ... DESC

其中ab,...是字段的名称(是的,您需要手动枚举它们)

PS:如果你不知道0NULL之间的区别:

ORDER BY `a` + `b` ... DESC

对你来说已经足够了