Bạn có thể nói rõ ràng về các liên kết:
SELECT Table1.Col1, Table1.Col2, Table1.Col3, Table2.Col4
FROM Table1 INNER JOIN
Table2
ON (Table1.Col1 = Table2.Col1 or Table1.Col1 is NULL and Table2.Col1 is NULL) AND
(Table1.Col2 = Table2.Col2 or Table1.Col2 is NULL and Table2.Col2 is NULL)
Trong thực tế, nhiều khả năng tôi sẽ sử dụng coalesce()
trong điều kiện tham gia:
SELECT Table1.Col1, Table1.Col2, Table1.Col3, Table2.Col4
FROM Table1 INNER JOIN
Table2
ON (coalesce(Table1.Col1, '') = coalesce(Table2.Col1, '')) AND
(coalesce(Table1.Col2, '') = coalesce(Table2.Col2, ''))
Ở đâu ''
sẽ là một giá trị không có trong một trong hai bảng.
Chỉ cần một lời cảnh cáo. Trong hầu hết các cơ sở dữ liệu, việc sử dụng bất kỳ cấu trúc nào trong số này sẽ ngăn cản việc sử dụng các chỉ mục.