私はスレッド型メッセージングサービスを組み立てています。私は自分の頭を特定のクエリにラップさせようとしています。私は現在、user_idの配列が提供されたときにthread_idを返すプロシージャを作成しようとしています。MYSQL複数のユーザーIDでメッセージスレッドIDを選択してください
テーブルには2つの列があります:thread_id & user_id。 Iは、テスト用のテーブルにおける4行を有する:
INSERT INTO thread_users (`thread_id`, `user_id`) VALUES (1,1);
INSERT INTO thread_users (`thread_id`, `user_id`) VALUES (1,70);
INSERT INTO thread_users (`thread_id`, `user_id`) VALUES (2,1);
INSERT INTO thread_users (`thread_id`, `user_id`) VALUES (2,21);
この例のユーザ1つのメッセージングユーザ70は、第1のスレッドを開始し、その後、メッセージユーザー21は、スレッド2を開始すると、
私はすでに両方のユーザーのIDを取得しようとしているので、スレッドに「購読している」ユーザーの一覧に基づいてthread_idを見つけることです。
あり、私はこの質問にそれを含めることはありませんが、参加するのカップルによって要求され、より多くのデータになるだろう...だから、それを言って、ちょうどにクエリを短縮することができますされています
SELECT DISTINCT `thread_id`
FROM `thread_participants`
WHERE `thread_participants`.`user_id` IN (1, 21)
GROUP BY `thread_id`
たのは、私はありがとうございました:-) 2人のスレッドに関連付けられているユーザまたは20 は、すべてのヘルプは大歓迎だろうがある場合、このクエリは枯れTHREAD_ID適切に返すべきであることを認識2.
返す必要があります!
取得しようとしている出力例をいくつか挙げることができますか? – Tin
(元の質問から - "どちらが2を返すべきですか")したがって、(1,21) - > 2 - (1,70) - > 1のuser_id配列でクエリを実行します。 1つの行が返され、選択された列はthread_id – user3617416