Упорядочить по «количеству (столбцы не нулевые)» - PullRequest
2 голосов
/ 20 февраля 2011

Я ищу способ упорядочить результаты 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 всегда НЕ ПУСТО (NULL), поэтому добавление его к счетчику не изменит результатов.

У кого-нибудь есть идеи по этому поводу, которые не предполагают разбора PHP результата в новый массив?Я пытаюсь сохранить часть обработки на уровне БД.

1 Ответ

5 голосов
/ 20 февраля 2011
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

будет достаточно для вас

...