如何用SQL结合LEFT JOIN查询Table A中不在Table B的Sandi和Susi?
用INSERT + LEFT JOIN找出Table A独有的记录
首先,咱们得明确核心逻辑:要找出Table A里有但Table B里没有的记录,LEFT JOIN是最合适的工具——它会保留左表(Table A)的所有行,右表(Table B)里找不到匹配的行,对应的字段就会是NULL。再结合INSERT的话,我们可以把这些差异记录先插入到一个临时表或者结果表,之后就能轻松查询显示了。
假设两个表用来匹配的名字字段都是name(如果你的实际字段名不一样,直接替换即可),具体步骤如下:
1. 创建结果存储表(可选,但符合题目结合INSERT的要求)
如果需要把结果持久化存储,先建一个简单的表来存差异记录:
CREATE TABLE IF NOT EXISTS Table_A_Exclusive ( name VARCHAR(50) );
2. 用INSERT + LEFT JOIN插入差异记录
通过INSERT...SELECT语法,把LEFT JOIN筛选出的差异结果插入到刚才创建的表中:
INSERT INTO Table_A_Exclusive (name) SELECT A.name FROM Table_A A LEFT JOIN Table_B B ON A.name = B.name WHERE B.name IS NULL;
3. 查询并显示结果
现在直接查询结果表就能看到Sandi和Susi了:
SELECT * FROM Table_A_Exclusive;
直接查询(无需插入的简化版)
如果只是想直接输出结果,不需要持久化,也可以跳过插入步骤,直接执行这个LEFT JOIN查询:
SELECT A.name FROM Table_A A LEFT JOIN Table_B B ON A.name = B.name WHERE B.name IS NULL;
逻辑说明
LEFT JOIN Table_B B ON A.name = B.name:将Table A的每一行与Table B中名字匹配的行关联,保留Table A的所有记录WHERE B.name IS NULL:筛选出Table B中没有匹配项的Table A记录——也就是咱们要找的Sandi和Susi
内容的提问来源于stack exchange,提问作者Ishak Gultom
相关产品推荐
相关产品推荐

