私はこのようになりますメッセージテーブルを持っている:SQLで2人のパーティー間の最初のメッセージを見つけるには?
| id | sender_id | recipient_id |
|-------------------|---------------| ...
| 1 | 23 | 20 |
| 2 | 11 | 5 | ...
| 3 | 20 | 23 |
| 4 | 23 | 20 | ...
| 5 | 7 | 11 |
私は任意の2つのユーザID(sender_id
とrecipient_id
列内のID)との間に最初のメッセージを見つけることを願っています。したがって、上記の試料についての結果は次のようになります
| id | sender_id | recipient_id |
|-------------------|---------------| ...
| 1 | 23 | 20 |
| 2 | 11 | 5 | ...
| 5 | 7 | 11 |
最初Iはsender_id
とrecipient_id
のチェックサムによってグループIは考えていた、そして次に分のメッセージID(id
)を取るが、チェックサムに依存して異なるため最初のメッセージ(イントロ)と最初の応答の両方を返す入力の順序。入力の順序が関係のないチェックサムの代替手段がありますか?
解決策が見つかるかもしれません。
ご迷惑をおかけして申し訳ありません。
私はあなたの答えが好きです。私はCTEテーブルを使う必要があるとは思わない。 URパーティションのロジックでグループ化し、minを使用します。SENDER_ID THEN SENDER_ID ELSE recipient_id ENDをrecipient_id WHEN EX \t \tため、 \t \t \t分(ID) を \t \t \t PARTICIPANT1 = CASEをFROM SELECTメッセージ \t基\t CASE SENDER_ID recipient_id THEN sender_id ELSE recipient_id END –
dfdsfdsfsdf
@KMC、それは良いことです。私はあなたがそれについて別の答えを投稿することをお勧めします。 –
これはあなたのソリューションに基づいています。すべてのあなたのクレジット。 lol – dfdsfdsfsdf