ことで、私は二人のユーザー間でメッセージを保存するコメントと呼ばれるテーブルがあり、テーブルの構造は次のようになります。グループメッセージは、最新のレスポンス
id | from_id | to_id | comment | date
私だけの間、最新のメッセージを表示するようにデータを照会したいです2つの当事者。 私は以前にそれを見ました。
私はMYSQLを使用しています。
ことで、私は二人のユーザー間でメッセージを保存するコメントと呼ばれるテーブルがあり、テーブルの構造は次のようになります。グループメッセージは、最新のレスポンス
id | from_id | to_id | comment | date
私だけの間、最新のメッセージを表示するようにデータを照会したいです2つの当事者。 私は以前にそれを見ました。
私はMYSQLを使用しています。
2人のユーザーのID番号が1
と2
であるとします。
SELECT comment
FROM COMMENTS
WHERE (from_id = 1 OR from_id = 2)
AND (to_id = 1 OR to_id = 2)
ORDER BY date DESC
LIMIT 1;
あなたが本当に杓子定規になりたい場合は、where句にこれを追加することができます。
AND NOT (from_id = to_id)
彼らが現れて自分自身にメッセージを送信する例を防止します。これは、ユーザーが自分のシステムに自分自身にメッセージを送信することも可能であることを前提としています。ユーザ1について
:ユーザ2について
SELECT comment
FROM COMMENTS
WHERE (from_id = 2 AND to_id = 1)
ORDER BY date DESC
LIMIT 0,1;
:
SELECT comment
FROM COMMENTS
WHERE (from_id = 1 AND to_id = 2)
ORDER BY date DESC
LIMIT 0,1;
句は、メッセージが他の当事者と副への二者のいずれかから送信されていることを確認する必要が「どこで」その逆のメッセージを表示します。
それは両方のユーザーに、2のいずれかから最新のメッセージを表示する必要がある場合:MySQLの `LIMIT 1 'に
SELECT comment
FROM COMMENTS
WHERE (from_id = 1 OR from_id = 2)
ORDER BY date DESC
LIMIT 0,1;
は、1人のユーザに関連する最新のメッセージをすべて選択し、最後に受信または送信したメッセージでグループ化することができます。例はGoogle Emailです。 – numerical25
はい、 "LIMIT 0,1"ビットを削除し、適用する必要のあるユーザーフィルタでフィルタリングしてください。 – ShaunOReilly
変更' TOP' 1 '。 –
@ypercube良いスポッティング。私はセミコロンも忘れてしまった。私の脳を腐っているMS SQL Server。 –
もし1つのidだけに関連するすべてのコメントを照会したいのであれば、2つではないでしょうか。それぞれの最新のメッセージでグループ化しますか? – numerical25