1. 程式人生 > >記錄下mysql的分組聚合函式group by

記錄下mysql的分組聚合函式group by

今天維護客戶的儲存過程時發現一個問題,連鎖客戶只有銷售明細表,沒訂單表,而公司要求寫查詢訂單的儲存過程,客戶那邊使用的資料是SQLserver,我使用了分組聚合函式group by ;

例如:這樣子寫SQLserver會報錯,因為group by 要求查詢的欄位也得包含在聚合函式裡。

select orderNO,paymoney,sum(money) from detail group by orderNo

而我自己用mysql做了模擬練習做了對比:

---模擬明細表
create table detail(
	detailID int PRIMARY key AUTO_INCREMENT,---明細主鍵
	paymoney double,--實付金額
	money double,--應付金額
	orderNo varchar(20)--訂單號
);

detail表中插入了兩筆訂單資料如下:

detailID paymoney money orderNo
1 1 2 001
2 2 3 001
3 3 4 001
4 4 5 002
5 5 6 002
6 6 7 002

 按照上面的SQLserver操作是可以實現的,不會報錯,而且paymoney顯示的是第一條記錄,如圖:

 

這裡簡單對比了SQLserver和mysql 分組函式group by 的不同點,mysql的感覺不夠嚴謹,希望有大神多多指教