SELECT marriage, blood FROM personnel
已知GROUP BY可以將資料分群,並去除重複資料… 因此希望以透過GROUP BY依blood將資料分群, 並透過COUNT(*)查看分群後的資料筆數, 寫下的語法如下:
SELECT marriage, blood, COUNT(*) FROM personnel
GROUP BY blood
但這時卻發生錯誤,為何呢?GROUP BY是哪些錯?解答:
在GROUP BY以marriage, blood作分群即可正常運作,語法如下:
SELECT marriage, blood, COUNT(*) FROM personnel原理:
GROUP BY marriage, blood
除了彙整函數外(如COUNT()等), SELECT選取的欄位必須同時出現在GROUP BY中, 原因很簡單,那就是GROUP BY指定分群必須對稱, 想想,SELECT即以選取marriage與blood欄位, 但卻僅透過GROUP BY對blood分群, 那marriage欄位呢?是不分群依資料筆數列出每筆的marriage資訊嗎? 若是選取每筆資料的marriage資訊, 那對blood分群又有何意義? 因此,除了彙整函數外(如COUNT()等), SELECT選取的欄位必須同時出現在GROUP BY中。
Facebook留言板: