MySQL统计1的个数 多个连续的1视作只有一个1
MySQL统计1的个数,多个连续的1视作一个1:
上图的统计结果应该是4个1。
这里我使用使用自定义变量来实现:
查询结果为预期的4条记录,但是如果重复执行该sql,发现结果不一样:
这是因为MySQL自定义变量对于仅对于此次连接有效,也就是在一个连接里是共享的。而最后一条记录(id=16)的值为1,在一次查询结束后@last值为1,从而影响下一次查询。后台也经常会使用连接池,连接是可重用的,所以使用在查询前需要对@last进行重置。
关于自定义变量的一些使用细节,可以参考我的这篇文章。
但是上面这种写法是用了2条SQL语句,对于后台来说,如果在连接数据库的url上未指定“&allowMultiQueries=true”,将会出现:“bad SQL grammar []”。但是如果想使用一条SQL来完成的话可以这么做:
我在实际开发中的需求是:有一个水阀的数据,0代表反冲洗、1代表关闭。它不断地发送它的状态数据,需要统计今天它的反冲洗次数。类似这样: