[英]MYSQL - Select dISTINCT values in two columns
我想选择上一次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
像这样:
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)
20,20,6)产生了一条附加记录。 您可以在添加额外的谓词WHERE
如果你想排除具有相同的记录条款sender_id
和receiver_id
。
试试这个代码:
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)
)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.