MySQL中的group by 注意事項
1、建表test_group_by:
create table test_group_by(
id TINYINT not null,
uname varchar(10) ,
age TINYINT DEFAULT 0,
class TINYINT DEFAULT 1,
PRIMARY key(id)
)engine=INNODB
2、插入資料:
INSERT INTO test_group_by VALUES (1,'111',22,1), (2,'222',42,1), (4,'444',20,2), (3,'333',20,2), (0,'000',11,3), (6,'666',33,3)
3、例項
3.1、group by col1的說明:col1列可以不在select列當中,下面的sql會給出示例。
3.2、select的列如果不在group by的列當中,並且根據group by 後面的列分組後任意列不能有唯一值,則這些不包含在group by 中的列都應該使用max或者min聚合函式。
如果按照class分組,查詢每個class分組下age的最大值,sql如下:
SELECT
id,
uname,
max(age)AS age
FROM
test_group_by
GROUP BY
class;
MySQL會提示錯誤如下:
Expression #1 of SELECT list is not in GROUP BY clause and contains nonaggregated column 'mybatis.test_group_by.id' which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_mode=only_full_group_by
其它列情況一樣的處理,正確的sql應該為:
SELECT
max(id),
max(uname),
max(age)AS age
FROM
test_group_by
GROUP BY
class;
3.3、select的列如果不在group by的列當中,並且根據group by 後面的列分組後任意列均有唯一值,則這些不包含在group by 中的列可以不使用max或者min聚合函式。
如果按照id分組,sql如下:
SELECT
id,
uname,
max(age),
class
FROM
test_group_by
GROUP BY
id;
4、如果沒有通過order by子句顯示地指定排序列,當查詢使用group by子句的時候,結果集會自動按照分組的欄位進行排序。如果不關心結果集的排序,而這種預設排序又導致了需要檔案排序,則可以使用order by null ,讓MySQL不再進行檔案排序。也可以在group by子句中直接使用desc 或者asc 關鍵字,使分組的結果按需要的方向排序。
相關推薦
MySQL中的group by 注意事項
1、建表test_group_by: create table test_group_by( id TINYINT not null, uname varchar(10) , age T
OCP-1Z0-051 第140題 子查詢中使用GROUP BY注意事項
Examine the structure of the PRODUCTS table:Name Null Type PROD_ID NOT NULL NUMBER(4) PROD_NAME
mysql中group by和order by同時使用無效的替代方案
前言 最近一年由於工作需要大部分使用的都是NoSql資料庫,對關係型資料庫感覺越來越陌生,一個由group by和order by 引發的血案由此而生。在此做個記錄,以備不時之需。 需求(得到所有barCode的最新的一條資料) 首先,看一下整體的表結構。
SQL SERVER2000 group by 注意事項
1).在select 子句的欄位列表中,除了聚集函式外,其他所出現的欄位一定要group by子句有定義才行,例如"GROUP BY A,B",那麼"select SUM(A),C"就有問題,因為C不在group by中,但是SUM(A)是可以的. 2).在sql serve
mysql中group by 的用法解析
1. group by的常規用法 group by的常規用法是配合聚合函式,利用分組資訊進行統計,常見的是配合max等聚合函式篩選資料後分析,以及配合having進行篩選後過濾。 假設現有資料庫表如下: 表user_info,id主鍵,user_id唯一
關於mysql中 group by , order by , where, having 語句的區別與運用
最近一直在忙著和資料庫有關的一些工作,這幾天在寫儲存過程的時候,一些mysql的語句突然感覺有些不太明白,就是group by , order by ,where , having這些語句,這次通過一個例項來總結和歸納一下,這幾個語句的用法,僅供以後參
mysql中group by分組後查詢無資料補0;
mysql經常會用到Group By來進行分組查詢,但也經常會遇到一個問題,就是當有where條件時,被where條件過濾的資料不顯示了。 例如我有一組資料: 我想查詢當日領取數量和當日核銷數量;
mysql中group by
對於group by在mysql中的使用和Oracle的差異性很大,準確的說不光和Oracle和別的資料庫差異性一樣,這些有點不太遵循標準SQL。我們知道常規的 sql,對於group by來說一定要結合聚合函式,而且選擇的欄位除了聚合函式外,還必須在group by中出現,否則報錯,但是在mysql中擴充
MySql含有GROUP BY子句的查詢中如何顯示COUNT()為0的結果
前階段工作中發現MySql含有GROUP BY子句的查詢中COUNT()為0的結果不顯示. 而針對於分組統計的此類問題,多數人(包括本人)通常會想到: SELECT PID,COUNT(1) AS SUM FROM SS WHERE FIAG = 1 GROUP BY PID
mysql 5.7高版本中group by問題解決辦法
select max(user_id) as user_id,`create_time` from silence where user_id in (1, 2, 3, 4) group by user_id desc; 我使用如上語句進行查詢的時候,竟然報錯了。 Expressi
mysql的group by用法在5.7和5.6中存在區別
http://stackoverflow.com/questions/39909261/order-by-before-group-by-in-subquery-working-in-mysql-5-5-but-not-in-mysql-5-7 http://stackov
mybatis中group by 語句中SQL報錯,原因是MySQL版本的group規則預設是:only_full_group_by
報錯資訊:......not in GROUP BY clause and contains nonaggregated column ...... which is not functionally dependent on columns in GROUP BY cla
mysql中order by和group by的詳細區別是詳細區別
order by 排序查詢、asc升序、desc降序示例:select * from 學生表 order by 年齡 查詢學生表資訊、按年齡的升序(預設、可預設、從低到高)排列顯示也可以多條件排序、 比如 order by 年齡,成績 desc 按年齡升序排列後
mysql精粹:group by 中很好的函式
在MySQL中,你可以獲取表示式組合的連線值。你可以使用DISTINCT刪去重複值。假若你希望多結果值進行排序,則應該使用 ORDER BY子句。若要按相反順序排列,將 DESC (遞減) 關鍵詞新增到你要用ORDER BY 子句進行排序的列名稱中。預設順序為升序;可使用ASC將其明確指定。 SE
mysql中order by與group by的順序
mysql 中order by 與group by的順序 是: select from where group by order by 注意:group by 比order by先執行,order by不會對group by 內部進行排序,如果group by後只有一條記
mysql使用GROUP BY分組實現取前N條記錄的方法
cls class ges rom 當前 分組 實現 一個 images MySQL中GROUP BY分組取前N條記錄實現 mysql分組,取記錄 GROUP BY之後如何取每組的前兩位下面我來講述mysql中GROUP BY分組取前N條記錄實現方法。 這是測試表(也
淺析MySQL使用 GROUP BY 分組聚合與細分聚合
官方 dev 錯誤 row 一個 求平均值 時也 total 正是 1. 聚合函數(Aggregate Function) MySQL(5.7 ) 官方文檔中給出的聚合函數列表(圖片)如下: 詳情點擊https://dev.mysql.com/doc/refman/5
MySQL使用group by 報this is incompatible with sql_mod
函數 size bee type term bst ans 查看sql 聚合函數 下面是employee表的所有數據。使用group by 分組查詢報錯this is incompatible with sql_mode=only_full_group_by查看sql_mo
【MySql】Group By數據分組
根據 round 技術 ack 使用 sele bsp inf span GROUP BY 語句根據一個或多個列對結果集進行分組。 在分組的列上我們可以使用 COUNT, SUM, AVG,等函數。 因為聚合函數通過作用於一組數據而只返回一個單個值, 因此,在SELECT