group by與order by同時使用

2021-07-11 07:47:11 字數 870 閱讀 8428

orderby子句中的列必須包含在聚合函式或groupby子句中。

eg:

[sql]view plain

copy

select

[col1] ,[col2],

max([col3]) 

from

[tb] 

group

by[col1] ,[col2]  

order

by[col1] ,[col2] ,

max([col3])  

select

[col1] ,[col2],

max([col3]) 

as[col3] 

from

[tb] 

group

by[col1] ,[col2]  

order

by[col1] ,[col2] ,[col3]  

select

[col1] ,[col2] 

from

[tb] 

group

by[col1] ,[col2] ,[col3] 

order

by[col1] ,[col2] ,[col3]  

撇開聚合函式不說,select後面的列+order by後面的列必須在group by裡面(sqlserver 要求,mysql 貌似沒這麼要求),也就是說select和order by 後面的列是group by列的子集,

而select 和order by直接沒什麼直接關係。

先ORDER BY再GROUP BY問題

我需要實現標識最小的顯示出來,並且binglihao沒有重複 以張三00為例,張三00有兩條資料,一條標識是50,另一條是56 語句 select from select h.xingming as xingming,h.binglihao as binglihao,j.biaoshi as bia...

group by和order by配合使用注意

對於sql server來說 group by和order by同時存在的情況是,order by對group by後的結果再進行排序的,所以order by後面的排序字段需要在select裡出現的,即orderby子句中的列必須包含在聚合函式或groupby子句中。如 下面這個就是錯的 sql c...

TOP語句與Order By語句

預設情況下,如果在子查詢,函式,檢視中嘗試去使用order by,create view dbo.vsortedorders asselect orderid,customerid from dbo.orders order by orderid go那麼可能會遇到下面的錯誤 訊息 1033,級別 ...