繁体   English   中英

MYSQL-在两列中选择dISTINCT值

[英]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_idreceiver_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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM