0

这些问题开始让我头疼,所以我尝试在这里找到一些帮助,因为我找不到类似的问题......我会尽量清楚。

我有下表:

id / id_sender / id_receiver / date
1  /    1      /      2      / 07/08/2013
2  /    3      /      1      / 08/08/2013
3  /    3      /      1      / 09/08/2013
4  /    1      /      3      / 10/08/2013
5  /    2      /      3      / 11/08/2013
6  /    2      /      1      / 12/08/2013

我尝试执行以下 SQL 查询:

SELECT rows WHERE id_sender or id_receiver = 1

所以在这里我会摆脱 ID 5

GROUP them when value are identical either way in id_sender and id_receiver

在这里,1/6 和 2/3/4 将被分组

SELECT the most recent one in each group

这个会分别选择 6 和 4,这是我想要得到的结果

到目前为止有什么:

SELECT * 
FROM table_name 
WHERE id_sender = '1' OR id_receiver = '1' 
ORDER BY date

但是我没有使用高级查询,并且我在分组方面遇到了困难,因为我无法按 ID_sender 和 ID_receiver 分组,因为在这两种方式中我都不会得到预期的分组,因为我没有正确的分组我可以' t 应用最大(日期)...

非常感谢您的帮助!

4

1 回答 1

0

尝试:

SELECT max_id, min_id, max(date) FROM
(
    SELECT id, 
    case when id_sender>id_receiver then id_sender else id_receiver end max_id,
    case when id_sender>id_receiver then id_receiver else id_sender end min_id,
    date FROM table_name
) g GROUP BY max_id, min_id

这个想法是始终在 max_id 中拥有最大的一个,在 min_id 中拥有最小的一个,以便您可以对它们进行分组。

于 2013-08-12T11:35:02.510 回答