Testa detta:
välj *från meddelanden där det inte finns (välj 1från meddelanden mmdär (mm.fromuser =m.frommuser eller mm.fromuser =m.touser) OCH (mm.touser =m.touser eller mm.touser =m.frommuser) och mm.timestamp>
m.timestamp)och m.fromuser ='användare1' eller m.touser ='användare1';
demo här .
Det skulle förmodligen vara bättre, framöver, att flagga konversationer mellan två användare som en viss konversation, då hör varje meddelande till en konversation, och därmed blir det mycket lättare att hitta konversationer som användaren är involverad i, och information om meddelanden relaterade till konversation. Hur som helst.
Prova den här istället. Usch.
select m.*
from messages m
left join messages m2
on ((m.fromuser = m2.fromuser and m.touser = m2.touser)
or (m.fromuser = m2.touser and m.touser = m2.fromuser))
and m.timestamp < m2.timestamp
where (m.fromuser = 'user1' or m.touser = 'user1')
and m2.id is null;
Det är sannolikt överlägset not exists
version, även om jag lyckas fixa den.
den här fiolen fungerar faktiskt