0

私はこの投稿を読んでいますFacebookやGmailのようなスレッド化されたプライベートメッセージングシステムの作成

それはすべてを驚くほどうまく説明しますが、クエリは私にはうまくいきません。「トップ1」と表示されている1行目でエラーが発生します。:(

これが私が到達しようとしているシナリオです:

  1. 5人がmember1と話している。メンバー1と他の5つのメンバーにはスレッドがあり、会話が5つあるため、合計5つのスレッドになります。5つのスレッドのそれぞれから最新の返信を取得し、最後の返信を残した人のユーザー名を取得する必要があります。

  2. メッセージが開いたら、返信を表示します。

私が読んでいた投稿は効率的で、何千、何十万ものスレッド/返信でうまく機能すると思います。遅くなる場合は、正しく機能する記事を誰かに教えてもらえるかどうか教えてください。私はMYSQLがあまり得意ではなく、まだ学んでいます。

私はこのテーブルセットアップを使用しています

ここに画像の説明を入力してください

4

1 に答える 1

1

TOPTransact-SQL構文です。たとえば、MSSQLServerやSybaseの場合です。MySQLの同等の構文は次のとおりですLIMIT(コマンドの最後にありますSELECT)。

select
  M.message_id
, M.sent_datetime
, M.title
, M.message_text
, S.user_id
, S.user_name
-- and anything else you want...
from MESSAGE M inner join USER S
  on M.sender_user_id = U.user_id
where M.reply_to_message_id = @ThreadRootMessageID
order by
  M.sent_datetime desc
limit 1
于 2012-07-07T16:12:52.753 に答える