Prøv dette:
vælg *fra beskeder mhvor ikke eksisterer (vælg 1fra beskeder mmhvor (mm.fromuser =m.framuser eller mm.fromuser =m.touser) OG (mm.touser =m.touser eller mm.touser =m.framuser) og mm.timestamp>
m.timestamp)og m.fromuser ='bruger1' eller m.touser ='bruger1';
demo her .
Det ville nok være bedre fremover at markere samtaler mellem to brugere som en bestemt samtale, så hører hver besked til en samtale, og dermed bliver det langt nemmere at finde samtaler brugeren er involveret i, og info om beskeder relateret til samtale. I hvert fald.
Prøv denne i stedet. Åh.
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 er sandsynligvis bedre end not exists
version, selvom det lykkes mig at rette den.