MySQL:两记录一对一记录

时间:2019-12-11 17:48:17

标签: php mysql laravel

我有一张这样的桌子。

id conversation_id messageable_id
 1               1              3 <--
 2               1              5
 3               2              7
 4               2              3 <--
 5               3              7
 6               3              9

一个对话有两个成员。

如果发件人为3,我必须像下面那样获得所有对话和接收者。

 conversation_id sender_id recevicer_id [sic]
               1         3            5
               2         3            7

如何建立查询?

谢谢。

1 个答案:

答案 0 :(得分:1)

您可以使用lead()(在MySQL 8.0中可用):

select *
from (
    select
        conversation_id,
        messageable_id sender_id,
        lead(messageable_id) over(partition by conversation_id order by id) receiver_id
    from mytable
) t
where sender_id = 3