mybatis中的count()按条件查询方式

网友投稿 424 2022-11-08

mybatis中的count()按条件查询方式

目录mybatis count()按条件查询1、sql count()函数2、mybatis中count()按条件查询在查询时使用count(*),total为1,结果为0

mybatis count()按条件查询

1、sql count()函数

count()函数返回匹配指定条件的行数。

sql count(column_name)语法:

count(column_name)函数返回指定列的值的数目(null)不计入。

select count(column_name) from tablhttp://e_name

sql count(*)语法:

count(*)函数返回表中的记录数。

select count(*) from table_name

sql count(distinct column_name)语法:

count(distinct column_name)函数返回指定列的不同值的数目。

select count(distinct column_name) from table_name

比如下面这张表:table_aid

+-----+---------+-------+------------+

| aid | site_id | count | date |

+-----+---------+-------+------------+

| 1 | 1 | 45 | 2016-05-10 |

| 2 | 3 | 100 | 2016-05-13 |

| 3 | 1 | 230 | 2016-05-14 |

| 4 | 2 | 10 | 2016-05-14 |

| 5 | 5 | 205 | 2016-05-14 |

| 6 | 4 | 13 | 2016-05-15 |

| 7 | 3 | 220 | 2016-05-15 |

| 8 | 5 | 545 | 2016-05-16 |

| 9 | 3 | 201 | 2016-05-17 |

+-----+---------+-------+------------+

执行sql语句:

//特定条件下指定列的数目

select count(count) as nums from table_aid

where site_id = 3

//输出结果:nums值为:521

//计算table_aid中总记录数

select count(*) as nums from table_aid

//输出结果:nums值为:9

//指定列的不同值的数目

select count(distinct site_id) as nums from table_aid

//输出结果:nums值为:5

2、mybatis中count()按条件查询

任务描述:数据库其中有两个字段分别为

1、站点:station、

2、状态:status,status的取值为success或者fail。

现在需求为将记录按站点分组,且要统计出其中的status为success的数量和为fail的数量。

mybatis代码:

select rfr.station, count(rfr.status='success' or null) as successNum, count(rfr.status='fail' or null) as failNum, count(1) as totalNum

from rec_file_report rfr

GROUP BY station

测试结果为:

{        "failNum": 2,        "totalNum": 73,        "successNum": 71,        "station": "admin"    },    {        "failNum": 26,        "totalNum": 521,        "successNum": 495,        "station": "changjiu.shao@wisdom56.com"    }

在查询时使用count(*),total为1,结果为0

在使用count(*)查询时,发现在console打印的mybatis日志返回的total为1,但是实际情况应该是0,返回的数据也是0

<== Total: 1

最后才发现,在使用count(*)查询时,返回的total并不是查询结果,即使为0,返回的也是1,跟total没有关系。

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:DevOps理念
下一篇:下一代模块卡接口:针对更小、更轻、更薄的计算机设备
相关文章

 发表评论

暂时没有评论,来抢沙发吧~