MYSQL使用group by時,查詢結果的總記錄數
阿新 • • 發佈:2019-01-26
在使用group by時
select count(*) from partner.gs_user_info u group by u.username,u.game;
查詢結果如下:
count計算的數量是每個group by的結果的數量,並不是我要的查詢記錄數的數量。
正確的寫法是這樣的:
select count(*) from ( select * from partner.gs_user_info u group by u.username,u.game) aa;
結果如下:
或者相同結果的寫法:
select count(distinct u.username,u.game) from partner.gs_user_info u ;
在使用criteria時使用distinct:
ProjectionList projectionList = Projections.projectionList();
projectionList.add(Projections.property("username"));
projectionList.add(Projections.property("game"));
criteria.setProjection(Projections.distinct(projectionList));
參考:http://blog.csdn.net/thc1987/article/details/25150789
SELECT t.report_date ,t.user_id FROM my_table t GROUP BY t.user_id,t.report_date
比如有這樣一條SQL,根據t.user_id,t.report_date兩個欄位統計
這樣前端頁面能展示資料,但往往需要一個總記錄數,在有分頁的情況下用到
一種解決方法是在外面套一層,然後對其count(*)
SELECT COUNT(*) FROM (SELECT t.report_date ,t.user_id FROM my_table t GROUP BY t.user_id,t.report_date ) AA
還有一種簡單的方法可以這樣寫
SELECT COUNT(DISTINCT report_date,user_id)
FROM my_table
這樣就針對上面的group by查詢顯示其總記錄數
如果只對user_id group by
SELECT
t.user_id
FROM
my_table t
GROUP BY t.user_id
SELECT COUNT(DISTINCT user_id) FROM my_table