-- 1. 隱式內連接(舊語法)
SELECT A.YWSJMS1, A.YWSJ1, A.cjsj, B.DDLB
FROM GY_XT_CZJL A, SW_DD_JL B
WHERE A.SCBJ=0 AND B.SCBJ=0 AND A.YWSN=B.SN;
-- 2. 顯式左連接
SELECT A.YWSJMS1, A.YWSJ1, A.cjsj, B.DDLB
FROM GY_XT_CZJL A
LEFT JOIN SW_DD_JL B ON A.YWSN=B.SN AND A.SCBJ=0 AND B.SCBJ=0;
| 維度 | 內連接 | 左連接 |
|---|---|---|
| 結果集基準 | 兩表匹配行的交集 | 左表所有行 + 右表匹配行 |
| 無匹配時 | 該行被過濾掉 | 保留左表行,右表列為 NULL |
| 適用場景 | 必須雙方存在關聯(如訂單-用戶) | 主表全量,從表可選(如用戶-訂單,查無訂單用戶) |
| 性能 | 通常較快(結果集小) | 可能較慢(保留所有左表行) |
左連接中:
ON A.YWSN=B.SN AND A.SCBJ=0 AND B.SCBJ=0:關聯條件。右表不滿足 SCBJ=0 的行不參與關聯,但左表行仍保留,右表列置 NULL。LEFT JOIN ... ON A.YWSN=B.SN WHERE B.SCBJ=0:WHERE 過濾在關聯後,會將右表為 NULL 的行過濾掉,退化為內連接。INNER JOIN、LEFT JOIN),可讀性強、語義清晰。ON 子句,而非 WHERE。