我有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