Postgresql Postgres,选择表A中的所有记录,并左键连接可能存在的B记录,条件为?

Postgresql Postgres,选择表A中的所有记录,并左键连接可能存在的B记录,条件为?,postgresql,Postgresql,我有一个设备表和一个用户设备详细信息表。 对于一个设备记录,可以有多个用户设备详细信息 我想按device.id获取一些设备(通常大约3个),并将可能存在的user\u device\u details记录与给定的user\u device\u details.user\u id 所以,给我所有id为(23,4,10)的设备,如果你发现一个相关的user\u device\u details和user\u id=87,加入它,这样我就可以让设备和可能的user\u device\u detail

我有一个
设备
表和一个
用户设备详细信息
表。 对于一个
设备
记录,可以有多个
用户设备详细信息

我想按device.id获取一些设备(通常大约3个),并将可能存在的
user\u device\u details
记录与给定的
user\u device\u details.user\u id

所以,给我所有id为(23,4,10)的设备,如果你发现一个相关的
user\u device\u details
user\u id
=87,加入它,这样我就可以让设备和可能的
user\u device\u details
记录由用户87生成

我不确定如何返回所有三台设备,即使可能只有设备23有
用户\u设备\u详细信息
记录

因此,始终返回我为其传递id的所有设备,如果它具有来自特定用户id的
用户\u设备\u详细信息
,则也将其放在设备行结果旁边(join?)

我试过这样的方法:

select *
from device d
left join device_details dd on d.id = dd.device_id
where d.id in (23,4,10)
and dd.user_id=${userId}
当我运行这个时,我只得到设备23,因为它是唯一一个有
用户\u设备\u详细信息的设备。用户\u id
=87


如何将设备4和10的所有三个设备以及两个空的
user\u device\u details

条件
where.dd\u user\u id=..
将左连接转换为内部连接,因为它将删除与连接条件不匹配的所有行

您可能想要:

select *
from device d
  left join device_details dd 
         on d.id = dd.device_id
        and dd.user_id=${userId}
where d.id in (23,4,10)