我正在使用 mysql db 的排序语法,我想通过完成列对行进行排序。我希望示例将描述该问题:
id |t1 | t2 | t3 | t4
----------------------
1 | a | b | c | d
2 | | e | |
3 | f | g | |
4 | h | i | j |
这是我的行/列结构。如您所见,有些字段是空的。我想对表格进行排序,以便输入看起来像这样
id |t1 | t2 | t3 | t4
----------------------
1 | a | b | c | d
4 | h | i | j |
3 | f | g | |
2 | | e | |
它已按填充(非空)字段的数量排序。最简单的方法是使用这样的查询进行排序:
SELECT id, t1, t2, t3, t4 FROM table ORDER BY t1 DESC, t2 DESC, t3 DESC, t4 DESC
它在大多数情况下都很好用,但是如果我的表如下所示,看看会发生什么:
id |t1 | t2 | t3 | t4
----------------------
1 | | b | c | d
2 | | z | |
排序后:
id |t1 | t2 | t3 | t4
----------------------
2 | | z | |
1 | | b | c | d
为什么?因为排序顺序是降序的,并且 t1 列是空的(所以它被忽略了),下一列是 t2。它也按降序排序,忽略其余列(如果它们为空)。
我发现在这里解决了类似的问题(我猜 - 尚未检查) ,但解决方案看起来很讨厌。您是否有其他想法按非空列数对表进行排序?