我正在嘗試編寫一個查詢,以顯示每個孔的最小值(最低分數),從而消除任何重複項。換句話說,如果hole_num 1上的最小分數是3,並且有3個分數,那麼與hole_num 1對應的行都不應該返回。但是,如果hole_num 1上只有一個值爲3,並且它是最小值,則應該返回該行。這是我能夠想出...不幸的是,我不知道如何刪除重複。mysql select至少不是重複的
示例表:
player_id hole_num score
------------- ------------ -----
1 1 4
1 2 5
2 1 3
2 2 5
我查詢得到的最低分數爲每個hole_num(但如果它發生不止一次沒有消除的行):
select. r.player_id, r.hole_num, r.score
from scorecard_test r
join (select hole_num,
min(score) best
from scorecard_test
group by hole_num) v on r.hole_num = v.hole_num
and r.score = v.best
產生下面的輸出:
player_id hole_num score
---------- --------- -----
1 2 5
2 1 3
2 2 5
我想寫一個查詢,只會顯示第二行以上(score = 3),因爲hole_num 2上的5(儘管它是最小值)是重複。任何幫助將不勝感激。
現在我明白了 - 你要的聯繫,只返回一個單一行。所以問題是 - 在重複的情況下,應該顯示(以及爲什麼)?爲什麼'player_id'在最終輸出中可見? – 2010-09-07 21:17:02
同一個玩家是否可以多次玩同一個洞?如果是這樣,那麼得分可以相同嗎?它可能會不同嗎? – 2010-09-07 21:21:58
我想我理解這樣的查詢背後的上下文;想想一個皮膚遊戲,其中每個洞的最低分數拿到這個洞的錢,但是如果有一個平局,那麼這個錢就會進入下一個洞。 – KeithS 2010-09-08 00:04:51