MySQL
user_matches を格納するテーブルがあり、結果は次のとおりです。
n_match id_user id_score
1 55 1
1 66 0
これは、「id=55 のユーザーが id=1 のユーザーと一致し、id=66 のユーザーが勝つ」ことを意味します。
したがって、ユーザーが対戦相手に勝ったり負けたりする 10、100、1000 試合があります。
n_match id_user id_score
1 55 1 (win)
1 66 0
2 55 0 (lose)
2 77 1
3 55 1 (win)
3 77 0
4 55 1 (win)
4 77 0
5 55 1 (win)
5 77 0
Ok。ご覧のとおり、ユーザーは負けることなく 3 試合に勝ちます (シリーズに勝つ)。それが私のクエリから必要なものです。
質問: このテーブルから最長の一連の勝利試合を取得するにはどうすればよいですか? クエリからだけで、SQL側またはサーバー側でループせずに可能ですか?
どうも。
編集:私が今理解している解決策の1つ-すべての一致を001010101111010101011のような文字列として取得し、それを区切り文字「0」で文字列の配列に分割します-> [1、1、1、1111、...]そしてただ取る最長のストリングの長さ。
しかし、この場合、サーバー側のコードを書かなければなりません =\ それは良くありませんが、mb が最速です。