2017-08-30 4 views
0

So brechen, was ich versuche zu tun ist, um eine Liste aller „initial“ -Nachrichten eine Person Fenster in ihre Messaging-MySQL Distinct/Gruppe durch, mein Kopf mit diesem

sieht abrufen Das ist der Tisch Struktur

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    | 

die Abfragen ich bisher versucht:

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

Und ich immer noch die beiden Reihen mit der gleichen thread_id

erhalten

Das gleiche mit dieser Abfrage:

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

Beide versagen zurückzukehren, was ich will, was alle einzigartig thread_id ist, wo der Absender oder der Empfänger gleich „bTP5n“

Haftungsausschluss: Dummy-Daten wurden für diese Frage verwendet

Antwort

1

Wenn Sie Gruppe von in der zweiten Union-Abfrage verwenden, dann gilt es nur für die zweite Abfrage, wenn Sie in alle Ergebnis anwenden möchten, dann müssen Sie Gruppe von außerhalb von allen schreiben die Ergebnisse. Versuchen Sie unter Abfrage:

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

Die GROUP BY-Klausel erforderlich ist, sobald statistische Berechnungsfunktionen mit Rohdaten verwendet werden. Es ist nicht Ihr Fall in Ihren Beispielen