aMySQL Database Schema
とfrom_id
a がありto_id
、どちらも数値ID
の user を表すとします。コンテキストは、チャットに似たテキストベースの会話です。
最後に交換されたすべてのメッセージと、そのユーザーが会話した他のすべてのユーザーのリストを選択query
することについてどう思いますか?database
user 1
aMySQL Database Schema
とfrom_id
a がありto_id
、どちらも数値ID
の user を表すとします。コンテキストは、チャットに似たテキストベースの会話です。
最後に交換されたすべてのメッセージと、そのユーザーが会話した他のすべてのユーザーのリストを選択query
することについてどう思いますか?database
user 1
SELECT * FROM TABLENAME WHERE from_id = USERID1 OR to_id = USERID1
パフォーマンスを向上させるために、必要な列を「*」の代わりに配置することをお勧めします。
日時フィールドがある場合は、それでも検索できます。
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 - タイムスタンプ