【问题标题】:Order by "count (columns not null)"按“计数(列不为空)”排序
【发布时间】:2011-02-20 06:06:00
【问题描述】:

我正在寻找一种通过值不为空的列的计数来对 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 解析到新数组中?我正在尝试将处理部分保留在数据库级别。

【问题讨论】:

  • 你不会错过0NULL 之间的区别吗?
  • @zerkms 他们懒得来参加我的生日派对,老实说,我不会想念那些混蛋。
  • @glowcoder: 别讽刺 :-(
  • 好吧,把语法错误删掉了。它确实说“你不会错过 0 和 null 吗?”我说不,我不会想念那些家伙,反正他们都是混蛋。 :p

标签: mysql count sql-order-by


【解决方案1】:
ORDER BY IF(`a` IS NULL, 0, 1) + IF(`b` IS NULL, 0, 1) ... DESC

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

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

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

对你来说已经足够了

【讨论】:

  • 是的,[0] 只是因为我很懒惰。但是,是的,非常好,这会很好用。使维护变得痛苦,但希望我不会太频繁地更改架构(但我正在做 RAD ......所以我们会看到哈哈)
猜你喜欢
  • 2021-05-12
  • 2016-01-08
  • 1970-01-01
  • 2018-02-05
  • 1970-01-01
  • 2023-03-06
  • 2012-02-07
  • 1970-01-01
相关资源
最近更新 更多