mybatis中的count()按條件查詢方式
mybatis count()按條件查詢
1、sql count()函數(shù)
count()函數(shù)返回匹配指定條件的行數(shù)。
sql count(column_name)語法:
count(column_name)函數(shù)返回指定列的值的數(shù)目(null)不計入。
select count(column_name) from table_name
sql count(*)語法:
count(*)函數(shù)返回表中的記錄數(shù)。
select count(*) from table_name
sql count(distinct column_name)語法:
count(distinct column_name)函數(shù)返回指定列的不同值的數(shù)目。
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 | +-----+---------+-------+------------+
執(zhí)行sql語句:
//特定條件下指定列的數(shù)目 select count(count) as nums from table_aid where site_id = 3 //輸出結(jié)果:nums值為:521 ? //計算table_aid中總記錄數(shù) select count(*) as nums from table_aid //輸出結(jié)果:nums值為:9 ? //指定列的不同值的數(shù)目 select count(distinct site_id) as nums from table_aid //輸出結(jié)果:nums值為:5
2、mybatis中count()按條件查詢
任務(wù)描述:數(shù)據(jù)庫其中有兩個字段分別為
1、站點:station、
2、狀態(tài):status,status的取值為success或者fail。
現(xiàn)在需求為將記錄按站點分組,且要統(tǒng)計出其中的status為success的數(shù)量和為fail的數(shù)量。
mybatis代碼:
<resultMap id="GroupBaseResultMap" type="java.util.Map"> ? ? <result column="station" jdbcType="VARCHAR" property="station" /> ? ? <result column="successNum" jdbcType="VARCHAR" property="successNum" /> ? ? <result column="totalNum" jdbcType="VARCHAR" property="totalNum"/> ? </resultMap> ? <!--任務(wù)統(tǒng)計:按站點 ? ?sum(if(type="fail",status,0))--> ? <select id="selectGroupByStation" resultMap="GroupBaseResultMap"> ? ? 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 ? </select>
測試結(jié)果為:
{
"failNum": 2,
"totalNum": 73,
"successNum": 71,
"station": "admin"
},
{
"failNum": 26,
"totalNum": 521,
"successNum": 495,
"station": "changjiu.shao@wisdom56.com"
}
在查詢時使用count(*),total為1,結(jié)果為0
在使用count(*)查詢時,發(fā)現(xiàn)在console打印的mybatis日志返回的total為1,但是實際情況應(yīng)該是0,返回的數(shù)據(jù)也是0
<== Total: 1
最后才發(fā)現(xiàn),在使用count(*)查詢時,返回的total并不是查詢結(jié)果,即使為0,返回的也是1,跟total沒有關(guān)系。
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
SpringBoot+WebSocket實現(xiàn)IM及時通訊的代碼示例
項目中碰到需要及時通訊的場景,使用springboot集成websocket,即可實現(xiàn)簡單的及時通訊,本文介紹springboot如何集成websocket、IM及時通訊需要哪些模塊、開發(fā)和部署過程中遇到的問題、以及實現(xiàn)小型IM及時通訊的代碼,需要的朋友可以參考下2023-10-10springsecurity實現(xiàn)攔截器的使用示例
Spring Security 可以替代攔截器,同時還可以提供更加細粒度的權(quán)限控制和身份認證,本文就來介紹一下springsecurity實現(xiàn)攔截器的使用示例,感興趣的可以了解一下2023-10-10Java使用Callable和Future創(chuàng)建線程操作示例
這篇文章主要介紹了Java使用Callable和Future創(chuàng)建線程操作,結(jié)合實例形式分析了java使用Callable接口和Future類創(chuàng)建線程的相關(guān)操作技巧與注意事項,需要的朋友可以參考下2019-09-09java實戰(zhàn)小技巧之優(yōu)雅的實現(xiàn)字符串拼接
字符串拼接是我們在Java代碼中比較經(jīng)常要做的事情,就是把多個字符串拼接到一起,這篇文章主要給大家介紹了關(guān)于java實戰(zhàn)小技巧之優(yōu)雅的實現(xiàn)字符串拼接的相關(guān)資料,需要的朋友可以參考下2021-08-08JAVA數(shù)據(jù)結(jié)構(gòu)之漢諾塔代碼實例
這篇文章主要介紹了JAVA數(shù)據(jù)結(jié)構(gòu)之漢諾塔,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習或者工作具有一定的參考學(xué)習價值,需要的朋友們下面隨著小編來一起學(xué)習學(xué)習吧2019-04-04spring中BeanUtils.copyProperties的使用(深拷貝,淺拷貝)
本文主要介紹了spring中BeanUtils.copyProperties的使用(深拷貝,淺拷貝),文中通過示例代碼介紹的非常詳細,對大家的學(xué)習或者工作具有一定的參考學(xué)習價值,需要的朋友們下面隨著小編來一起學(xué)習學(xué)習吧2023-05-05