2016-07-22 308 views
0

我有這樣的一個表:GROUP BY(A,B)和(B,A)

player1 player2 player3 player4 score1 score2 
    1   2   3   4   11   2 
    1   2   3   4   4   11 
    2   1   3   4   11   5 

如果我查詢:SELECT player1, player2, SUM(score1) FROM mytable GROUP BY player1, player2

我會得到:

player1 player2 SUM(score1) 
    1   2   15 
    2   1   11 

不過,我想GROUP BY player1,player2 AND player2,player1在同一時間,得到:

player player SUM(score1) 
    1   2   26 

有誰知道是否有可能(我使用MySQL)。

如果不是,你知道在PHP中使用它的好方法嗎?

+3

正常化您的架構 – Strawberry

+0

@Strawberry也許我的表是不是粘的東西,是的。你認爲我應該把我的球員放在另一張桌子上,並且有類似的東西:group1,group2,score1,score2? –

回答

0

您可以使用least()greatest()

select least(player1, player2), greatest(player1, player2), sum(score1) 
from mytable 
group by least(player1, player2), greatest(player1, player2); 
+0

這是完美的,我不知道爲什麼我沒有考慮它。 :) –

+0

@Strawberry只要你沒有特別針對任何用戶(你不是),你可以以任何理由downvote。我很好奇你爲什麼覺得需要留言之前,雖然 – Lamak

+0

@Strawberry我看到了,聽起來很好。無論如何,我認爲你應該對待每一個相同的投票 – Lamak

-1

或試試這個

select min(player1) as player1,max(player2) as player2, sum(score1) as score1 from 
(
select player1, player2, SUM(score1) as score1 FROM mytable GROUP BY player1, player2 
) as t 
相關問題