1

実装メッセージシステムがあります。私の問題は、あるユーザーがすでに別のユーザーとのスレッドを持っているかどうか、もしそうなら、中間は何であるかを知りたいということです。

このようなmessages_recipsテーブルがあります

---------------------------     
| mid | seq | uid | status|
|--------------------------
| 4   | 1   | 1   | A     |
| 4   | 1   | 2   | A     |
---------------------------

ユーザーID1がユーザーID2のスレッドを持っている場合、同じ中央の2つの行を保持します。私は私が求めていることを達成するために2つのSQLを作成できることを知っていますが、私は1つのSQLでそれを実行しようとしています。

4

2 に答える 2

1

Waqar Janjuaが指摘しているように、これの鍵は自己結合クエリです。

SELECT m1.mid
  FROM messages_recips AS m1
  JOIN messages_recips AS m2 ON m1.mid = m2.mid
 WHERE m1.uid = 1
   AND m2.uid = 2
于 2012-07-14T15:13:25.963 に答える
0

自己結合クエリを作成する必要があると思います。

Select u.uid, u1.uid from tablename u
 INNER JOIN tablename u1 on u.mid = u1.mid

同じmidを持つすべてのユーザーを取得します。

user1とuser2のレコードのみを取得するには、クエリの最後にwhere句を配置する必要があります。

 Select u.uid, u1.uid from tablename u
 INNER JOIN tablename u1 on u.mid = u1.mid
 Where ( u.uid In ( 1,2 ) OR u1.uid In ( 1,2 ) ) ;
于 2012-07-14T10:29:17.463 に答える