I have a table storing messages with a body, from ID, to ID and the datetime it's sent on:

```
ID | From | To | SendDate | Body
---------------------------------
1    10     20   [a date]    blabla
2    20     10   [a date]    some text
3    8      10   [a date]    some more text
4    10     2    [a date]    text

```

I would like to capture all 'threads' of user 10,
but group if them together and only return the last message (max senddate)

I can't get much further than this:

```
select * from message where [to] = 10 or [From] = 10 order by senddate desc

```

This will give me all messages user 10 is involved in, so it will return the exact table above,
but record 1 and 2 belong to the same 'thread' (record 2 is a reply on record 1), so I need to group them somehow together and only return the newest record (record 2).

What I want is:

```
ID | From | To | SendDate | Body
---------------------------------
2    20     10   [a date]    some text
3    8      10   [a date]    some more text
4    10     2    [a date]    text

```

How can I do that?