SQL如何查询t1表中与t2表无匹配uid的对应car_id记录
实现方案
你可以用以下几种常见的SQL写法实现需求,都可以返回t1中t2没有匹配uid的记录:
- NOT IN写法(逻辑最简单易读)
注意需要加t2.uid IS NOT NULL的过滤,避免t2的uid存在空值时NOT IN返回结果为空的问题:
SELECT uid, car_id FROM t1 WHERE uid NOT IN ( SELECT uid FROM t2 WHERE uid IS NOT NULL );
- LEFT JOIN + 空值判断写法(大表场景性能更优)
SELECT t1.uid, t1.car_id FROM t1 LEFT JOIN t2 ON t1.uid = t2.uid WHERE t2.uid IS NULL;
- NOT EXISTS写法(生产环境常用,性能稳定)
SELECT uid, car_id FROM t1 WHERE NOT EXISTS ( SELECT 1 FROM t2 WHERE t2.uid = t1.uid );
以上三种写法在你提供的测试数据中,都会返回uid: q123,car_id: 567的符合要求的记录。
内容的提问来源于stack exchange,提问作者user16228179
相关产品推荐
相关产品推荐

