記錄下mysql的分組聚合函式group by
阿新 • • 發佈:2019-02-01
今天維護客戶的儲存過程時發現一個問題,連鎖客戶只有銷售明細表,沒訂單表,而公司要求寫查詢訂單的儲存過程,客戶那邊使用的資料是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的感覺不夠嚴謹,希望有大神多多指教