行为演示
行为演示
-- a.k 为 NULL 的行不会出现在结果里
SELECT a.id, b.name
FROM a
JOIN b ON a.k = b.k;
-- 左连接会保留这些行,右表列补 NULL
SELECT a.id, b.name
FROM a
LEFT JOIN b ON a.k = b.k;| 内连接 | NULL 键行被丢弃 |
|---|---|
| 左连接 | NULL 键行保留、右表补 NULL |
| 设计建议 | 连接键尽量 NOT NULL,或约定哨兵值 |
NULL 与其他任何值(包括 NULL)比较都是 UNKNOWN:连接键含 NULL 的行在内连接中直接消失,在左连接中保留但补 NULL。
-- a.k 为 NULL 的行不会出现在结果里
SELECT a.id, b.name
FROM a
JOIN b ON a.k = b.k;
-- 左连接会保留这些行,右表列补 NULL
SELECT a.id, b.name
FROM a
LEFT JOIN b ON a.k = b.k;| 内连接 | NULL 键行被丢弃 |
|---|---|
| 左连接 | NULL 键行保留、右表补 NULL |
| 设计建议 | 连接键尽量 NOT NULL,或约定哨兵值 |