4
次の表を参照してください。しかし、私は似たユーザー間の行をマージしたい2行を1つにマージする
user1 user2 count
-------------------
A B 5
A C 2
B A 6
B C 1
C A 9
C B 4
:それはuser1がuser2のとの会話を(「AはBとの会話を開始し、5回」)を開始した回数を示します。だから、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、それをループにテーブルを選択するようにしました結果を新しいテーブルにINSERTします。しかし、これは非常に重複しているようです(テーブルには何千ものレコードが含まれているためゆっくりとしています)。これは(My)SQLでも可能ですか?
@ Pr0noこの行の圧縮を行う前に、@ Pr0noでクエリの絞り込みを計画していますか?もしそうなら、あなたはいくつかの障害にぶつかるでしょう。たとえば、上記のクエリでは、 'HAVING'ブロックを使用しない限り、' LEAST(user1、user2) 'にアクセスすることはできませんが、' WHEN'ブロックを使用しない限り、テーブル全体を掘り下げることはありません。ちょっと注意してください。 –
+1円柱MIN()とMAX()、私はSyBaseであなたを愛していますよ! – MatBailie
@RobertMartin - なぜあなたは 'LEAST()'を使うために 'HAVING'ブロックが必要であると示唆していますか? http://dev.mysql.com/doc/refman/5.5/en/comparison-operators.html#function_least – MatBailie