我想选择sender_id或receiver_id = 20的最后一次。让我给你举个简单的例子。
Table:
sender_id receiver_id created_time
20 30 1
30 20 2
20 30 3
20 40 4
40 20 5
20 20 6
20 30 7
50 60 9
Result:
sender_id receiver_id created_time
40 20 5
20 30 7发布于 2016-05-10 18:04:09
如下所示:
SELECT LEAST(sender_id, receiver_id),
GREATEST(sender_id, receiver_id),
MAX(created_time)
FROM mytable
WHERE 20 IN (sender_id, receiver_id)
GROUP BY LEAST(sender_id, receiver_id),
GREATEST(sender_id, receiver_id)上面的查询为条目(20, 20, 6)生成一条额外的记录。如果希望排除具有相同sender_id和receiver_id的记录,可以在WHERE子句中添加一个额外的谓词。
发布于 2016-05-10 18:21:49
尝试以下代码:
SELECT * FROM new_table AS t1
WHERE
(sender_id = 20 OR receiver_id = 20)
AND
(t1.created_time >=
(SELECT MAX(created_time) FROM new_table WHERE sender_id = t1.sender_id)
)https://stackoverflow.com/questions/37135132
复制相似问题