php mysql 非空_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))

解决方法:

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作为比较的结果.我希望如此.

标签:php,mysql

来源: https://codeday.me/bug/20190526/1159225.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值