文章優先發表在個人部落格,後續更新可能忘記同步到csdn。使用group by後,每一類的資料都是取自預設排序的第一條。id個人部落格本篇文章位置:
name
type
score1張三
1662李四
1773王五
2184趙六
2305田七
3156汾九
399
select
max(score)
from xdx_test group
bytype
;
2-1:也就是說查詢結果如下。
name
score
李四77
趙六30
汾九99
2-2:這時你的sql應該怎麼寫呢?很多人可能和我想的一樣直接在第一條sql多加個name不就好了?
select name,
max(score)
from xdx_test group
bytype
;
這樣的查詢結果為:
name
score
張三77
王五30
田七99
2-3:很顯然這個結果不是我們想要的,正確的sql如下:
select name,score
from
xdx_test
where
(type
, score)in(
select
type
,max
(score)
from
xdx_test
group
bytype
)
2-4:如果再往表裡面插入一條資料 id=7,name=香十,type=3,score=99
那麼你就要再進行一次分組,確保資料的不重複。
上面這個sql,我們其實是根據type、和score來查詢資料的。所有可能存在重複的資料。
比如這個時候的,type=3,score=99,有兩個人,香十和汾九
1、我們使用group by 分組的時候,會按照預設排序選取一條資料
2、當我們使用group by查詢多個欄位的時候,select type,max(score) from,多個欄位是分開取的。如果沒有限定條件預設都取第一條資料。所有會看到 type,和max(score),取的並不是同一條資料。
Hibernate多對多查詢
乙個老師教許多學生,乙個學生被許多老師教,乙個學生有好多書,同一種書被許多同學擁有.要查詢教擁有書 a 的學生的老師 hql如何寫呀?如何取值?classteacher classstudent classbook hql語句 select t from teacher t join t.stude...
mybatis 多對多查詢
查詢使用者及使用者購買商品資訊。查詢主表是 使用者表 user 關聯表 由於使用者和商品沒有直接關聯,通過訂單和訂單明細進行關聯,所以關聯表是 orders orderdetail items select orders.order表的唯一標識 user表的唯一標識 user.username,us...
django model 多對多查詢
看一下自己的models檔案 class hostlist models.model ip models.ipaddressfield unique true,verbose name u ip位址 hostname models.charfield max length 30,verbose na...