我正在研究一种通过计算值不为空的列来对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解析到新数组?我正在尝试将处理部分保持在数据库级别。
答案 0 :(得分:5)
ORDER BY IF(`a` IS NULL, 0, 1) + IF(`b` IS NULL, 0, 1) ... DESC
其中a
,b
,...是字段的名称(是的,您需要手动枚举它们)
PS:如果你不知道0
和NULL
之间的区别:
ORDER BY `a` + `b` ... DESC
对你来说已经足够了