select a,b,c,d,e from admin group by a,b,c,d,e== 按a,b,c,d,e列分组
晕 到底是按哪个列分组啊? 按a b c d e 列进行分组是什么意思
select a,b,c,d,e from admin group by a,b,c,d,e==按a,b,c,d,e列分组
group by 的作用是分组求汇总情况,象sum(),avg(),count(),max(),min()一般通过group by求得,你所看到的没有这些,实际意思也不大,所以你难理解。 group by 按从左到右的顺序分组,也就是先把数据 按a列 相同的数据放到一起,当然相同的数据中b 列又有相同的数据,进一步分组数据会 按b列 相同的数据放到一起,往下不说了 a b c d e a b c d e a b c d e A1 B2 C2 D2 D4 A1 B2 C2 D2 D4 A1 B2 C2 D2 D4 A2 B3 C2 D3 D2 A1 B3 C4 D5 D4 A1 B2 C3 D4 D4 A1 B3 C4 D5 D4 A1 B2 C3 D4 D4 A1 B3 C4 D5 D4 A1 B2 C3 D4 D4 A2 B3 C2 D3 D2 A2 B3 C2 D3 D2 第一个是原始数据,第二个按a分组所以A1排到了起,但b列仍是乱的,第三个按a,b分组b2排到了起,往下按规律,由此你会发现group by中的顺序是很重要的, order by 的原理也是这样,先按左边的排序,直到最右边
LZ不厚道, 你不会问group by a,b,c是什么意思而非要问group by a,b,c,d,e是什么意思,害得人家白白帮你多写两列.
我以前学习SQL的笔记: GROUP BY将一列或者多列定义成为一组,使得组内所有的行在那些列中的数值相同,注意:select列表中的每一列都必须同时出现在group by中(除常量和聚集函数外) select EmployeeID,Count(*) totals from Orders group by EmployeeID select EmployeeID,Count(*) totals from Orders group by EmployeeID Having count(*)>=100 select CustomerID,Count(*)Totals from Orders group by CustomerID Having CustomerID like 'L%'
按a,b,c,d,e列分组
group by 按从左到右的顺序分组,也就是先把数据 按a列 相同的数据放到一起,当然相同的数据中b 列又有相同的数据,进一步分组数据会 按b列 相同的数据放到一起,往下不说了
a b c d e a b c d e a b c d e
A1 B2 C2 D2 D4 A1 B2 C2 D2 D4 A1 B2 C2 D2 D4
A2 B3 C2 D3 D2 A1 B3 C4 D5 D4 A1 B2 C3 D4 D4
A1 B3 C4 D5 D4 A1 B2 C3 D4 D4 A1 B3 C4 D5 D4
A1 B2 C3 D4 D4 A2 B3 C2 D3 D2 A2 B3 C2 D3 D2
第一个是原始数据,第二个按a分组所以A1排到了起,但b列仍是乱的,第三个按a,b分组b2排到了起,往下按规律,由此你会发现group by中的顺序是很重要的,
order by 的原理也是这样,先按左边的排序,直到最右边
GROUP BY将一列或者多列定义成为一组,使得组内所有的行在那些列中的数值相同,注意:select列表中的每一列都必须同时出现在group by中(除常量和聚集函数外)
select EmployeeID,Count(*) totals from Orders group by EmployeeID
select EmployeeID,Count(*) totals from Orders group by EmployeeID Having count(*)>=100
select CustomerID,Count(*)Totals from Orders group by CustomerID Having CustomerID like 'L%'