WITH table1 AS(
SELECT 1 AS a,'a1' AS b UNION ALL
SELECT 2 AS a,'a2' AS b UNION ALL
SELECT 3 AS a,'a3' AS b UNION ALL
SELECT 4 AS a,'a4' AS b UNION ALL
SELECT 5 AS a,'a5' AS b
),
table2 AS(
SELECT 1 AS aa,'a1' AS bb UNION ALL
SELECT 3 AS aa,'a4' AS bb UNION ALL
SELECT 4 AS aa,'a5' AS bb UNION ALL
SELECT 5 AS aa,'a6' AS bb UNION ALL
SELECT 6 AS aa,'a7' AS bb
)
SELECT a1.a, a1.b, b1.aa, b1.bb FROM table1 AS a1 INNER JOIN table2 AS b1 ON a1.a=b1.aa 
AND EXISTS ( SELECT * FROM table2 WHERE bb=a1.b);结果是:
a b aa bb
--------------------
1 a1 1 a1
2 a2 NULL NULL
3 a3 NULL NULL
4 a4 4 a5
5 a5 5 a6但是table2中的bb='a6'在table1的b列根本就不存在,为啥还能出现最后一行呢?