表 A(Aname, Aaspath)與表 B(Bname, Baspath),查詢 A 中 Aname || Aaspath 不等於 B 中 Bname || Baspath 的記錄。
SELECT *
FROM A1
WHERE Aname || Aaspath NOT IN (
SELECT Bname || Baspath
FROM B1
);
-- A1
1 少女1 住址1
2 少女2 住址2
3 少女3 住址3
8 少女8 住址8
7 少女7 住址7
-- B1
1 少女1 住址1
2 少女2 住址2
5 少女5 住址5
6 少女6 住址6
-- 結果
3 少女3 住址3
8 少女8 住址8
7 少女7 住址7
NOT IN 可能因 NULL 值導致全表掃描,改用 NOT EXISTS:
SELECT *
FROM A1 a
WHERE NOT EXISTS (
SELECT 1 FROM B1 b
WHERE b.Bname || b.Baspath = a.Aname || a.Aaspath
);
CREATE INDEX idx_a_concat ON A1(Aname || Aaspath);TO_CHAR 轉換|| 會導致整體為 NULL,需用 NVL 處理FETCH FIRST n ROWS ONLY 分頁