微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

php – 计算MySQL中非空的字段数

我有一个用户数据库,他们可以向其他用户发送消息(最多四个),他们发送的消息的ID在他们的用户行中.

Name    | Email       | Msg1 | Msg2 | Msg3 | Msg4
--------+-------------+------+------+------+-----
Pez     | me@me.com   |  1   |  55  |  42  |  5 
Steve   | fake@me.com |  0   |   0  |   0  |  0 
Leon    | josh@me.com |  3   |   0  |   3  |  5 

如何在MySQL查询获取非空或不等于0的消息行的数量,允许我按顺序排序?所以它会回来

Pez   | 4 Mesasges
Leon  | 3 Messages
Steve | 0 Messages

我的想法是这样的:

order by count(!empty(msg1)+!empty(msg2)+!empty(msg3)+!empty(msg4)) 

解决方法:

使用normalized tables可以很简单

SELECT Count(*) FROM messages WHERE userid=47

但是使用你的架构尝试类似的东西

SELECT
  name,
  (msg1<>0) + (msg2<>0) + (msg3<>0) + (msg4<>0) as cmessages
FROM
  foo  

编辑:vincent Ramdhanie使用if()的答案不依赖于MysqL的行为,将0作为假,使用1作为比较的结果.我希望如此.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐