4

次の表を検討してください。user1がuser2との会話を開始した回数(「AがBとの会話を開始した回数、5回」)を示します。

user1  user2  count
-------------------
A      B      5
A      C      2
B      A      6
B      C      1
C      A      9
C      B      4

ただし、類似したユーザー間で行をマージしたいと思います。したがって、user1:Aおよびuser2:Bはuser1:Bおよびuser2:Aと同じであり、次の結果になります。

user1  user2  count
-------------------
A      B      11 (5 + 6)
A      C      11 (2 + 9)
B      C      5

私が最初に考えたのは、テーブルをPHPに選択し、ループして行を追加し、結果を新しいテーブルに挿入することでした。しかし、これは非常に冗長に見えます(テーブルには数千のレコードが含まれているため、低速です)。これは(My)SQLでも可能ですか?

4

1 に答える 1

5
SELECT LEAST(user1, user2), GREATEST(user1, user2), SUM(count) AS count
FROM yourtable
GROUP BY LEAST(user1, user2), GREATEST(user1, user2)
于 2012-04-25T19:45:16.643 に答える