2017-08-30 9 views
0

で私の頭を壊し、私は人が自分のメッセージウィンドウに見ているすべての「初期」メッセージのリストを取得するために行うことですしようとしている何これはテーブルです私がこれまで試した構造MySQLの個別/グループで、だから、この1

thread_id | sender | receiver | message | date | sender_deleted | sender_received | read 
xRdaQ  | bTP5n | lCBNA | hello! | date | 0    | 0    | 
xRdaQ  | lCBNA | bTP5n | hey! | date | 0    | 0    | 
1T4xR  | bTP5n | An03R | hhi  | date | 0    | 0    | 

クエリ:

select * from messages where sender = 'bTP5n' 
union select * from messages where receiver = 'bTP5n' 
group by conversation_id 

そして、私はまだ同じなthread_id

持つ2つの行を取得

この1つのクエリと同じ:

select * from messages where sender = 'bTP5n' 
union select * from messages where receiver = 'bTP5n' 
group by conversation_id order by date desc 

にそれらの両方は、送信者または受信者が「bTP5n」

放棄に等しいすべてのユニークなthread_idである、私が欲しいものを返すために失敗しています。ダミーデータがこの質問に使用されました

答えて

1

2次ユニオンクエリーでgroup byを使用している場合は、2番目のクエリーにのみ適用されます。すべての結果に適用する場合は、結果。 クエリの下に試してみてください。

select * from 
(select * from messages where sender = 'bTP5n' 
union 
select * from messages where receiver = 'bTP5n' 
) 
as a group by conversation_id order by date desc 
0

GROUP BY句は、すぐに、統計計算機能は、生データで使用されているとして必要とされます。あなたの事例ではあなたの場合ではありません

関連する問題