0

aMySQL Database Schemafrom_ida がありto_id、どちらも数値IDの user を表すとします。コンテキストは、チャットに似たテキストベースの会話です。

最後に交換されたすべてのメッセージと、そのユーザーが会話した他のすべてのユーザーのリストを選択query することについてどう思いますか?databaseuser 1

4

2 に答える 2

0
SELECT * FROM TABLENAME WHERE from_id = USERID1 OR to_id = USERID1 

パフォーマンスを向上させるために、必要な列を「*」の代わりに配置することをお勧めします。

日時フィールドがある場合は、それでも検索できます。

于 2012-06-22T20:49:27.290 に答える
0

1 人のユーザーに必要な場合:

SELECT * FROM TABLENAME 
WHERE from_id = USERID1 OR to_id = USERID1 
ORDER BY `timestamp` DESC
LIMIT 1

ここtimestamp- タイムスタンプ フィールド。

すべてのユーザーに対して:

select text, id, ts 
from (select text, from_id as id,ts from chat union select text, to_id as id,ts from chat) T 
group by id 
having ts=max(ts)

ここに ts - タイムスタンプ

于 2012-06-22T20:48:14.290 に答える