mysql – 按大多数完成的行排序
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了mysql – 按大多数完成的行排序,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1452字,纯文字阅读大概需要3分钟。
内容图文
![mysql – 按大多数完成的行排序](/upload/InfoBanner/zyjiaocheng/894/961635f3e65e4346baec3d72670d7a3f.jpg)
我正在使用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.它也按降序排序,忽略其余列(如果它们是空的).
我发现类似的问题已解决(我猜 – 尚未检查)here但解决方案看起来很讨厌.您是否有其他想法按非空列数对表进行排序?
解决方法:
您应该为所有相关列汇总IS NULL或IS NOT NULL的结果,并将其用作主要排序来解决您的基本问题,然后强加您想要的任何辅助排序.
我不清楚你想如何用相同数量的非空列值对两行进行排序,但我猜你想要从左到右对它们进行升序排序,在这种情况下这应该对你有用:
(更新:正如eggyal指出的那样,“空”表示空字符串,而不是NULL.请参阅下面的更新查询):
SELECT id, t1, t2, t3, t4
FROM table
ORDER BY ((t1 = '') + (t2 = '') + (t3 = '') + (t4 = '')) ASC,
t1 DESC, t2 DESC, t3 DESC, t4 DESC
内容总结
以上是互联网集市为您收集整理的mysql – 按大多数完成的行排序全部内容,希望文章能够帮你解决mysql – 按大多数完成的行排序所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。