我是sql的新手,通常我认为避免子查询更好,所以我想知道如何使用joins重写这一点……
SELECT ccn.*
FROM table1 AS ccn
WHERE ccn.col1 = '11'
AND ccn.col2 not in (SELECT table2.col4
FROM table2)问候
发布于 2020-11-26 21:46:45
我建议您使用NOT EXISTS编写本文
SELECT ccn.*
FROM table1 ccn
WHERE ccn.col1 = '11' AND
NOT EXISTS (SELECT 1
FROM table2 t2
WHERE t2.col4 = ccn.col2
);这通常具有最好的性能--并且可能按照您希望的方式对待NULL值。
带过滤功能的LEFT JOIN在性能上非常相似:
SELECT ccn.*
FROM table1 ccn LEFT JOIN
table2 t2
ON t2.col4 = ccn.col2
WHERE ccn.col1 = '11' AND t2.col4 IS NULL;https://stackoverflow.com/questions/65023255
复制相似问题