我有2个表:SQL:加入或条件
Devices (id (PK))
Links (id (PK), device_id_1 (FK), device_id_2 (FK))
表示通过链路连接的设备。
我需要选择连接给定设备的所有设备(可以是device_id_1或device_id_2)。我试着用下面的查询做到这一点:
select d2.*
from Devices as d1
left outer join Links as l on d1.id in (l.device_id_1, l.device_id_2)
left outer join Devices as d2 on d2.id in (l.device_id_1, l.device_id_2)
where d1.id = 398 and d2.id <> 398;
但只要我说第二JOIN
查询返回零行。我究竟做错了什么?
招d2.id <> 398作为AND条件到加入标准。你用目前的方法否定了左连接;实质上使它成为一个内部连接。一个不太优雅的方法是检查d2.id上的null null – xQbert
似乎你可以用链接表来做到这一点。在Devices表中除了id以外是否还有其他数据? – kbball