如何用SQL查询不在fiscal_code中的tax_id及对应exp_date
实现需求的几种SQL写法
这里有几种常用的SQL写法可以实现你的需求,你可以根据自己数据库的特性和数据情况选择:
方法1:使用NOT IN
SELECT tax_id, exp_date FROM table_a -- 替换成你的第一张表名 WHERE tax_id NOT IN (SELECT fiscal_code FROM table_b); -- table_b替换成你的第二张表名
注意:如果第二张表的fiscal_code字段存在NULL值,这个写法会返回空结果,因为NULL的比较逻辑特殊,这种情况下建议用下面的方法。
方法2:使用NOT EXISTS
SELECT a.tax_id, a.exp_date FROM table_a a -- 替换成你的第一张表名,a是表别名 WHERE NOT EXISTS ( SELECT 1 FROM table_b b -- 替换成你的第二张表名,b是表别名 WHERE b.fiscal_code = a.tax_id );
这个写法不受NULL值影响,而且当tax_id和fiscal_code字段有索引时,查询性能通常比较好。
方法3:使用LEFT JOIN + IS NULL
SELECT a.tax_id, a.exp_date FROM table_a a -- 替换成你的第一张表名 LEFT JOIN table_b b -- 替换成你的第二张表名 ON a.tax_id = b.fiscal_code WHERE b.fiscal_code IS NULL;
左连接会保留第一张表的所有记录,然后筛选出第二张表中没有匹配的行(也就是b.fiscal_code为NULL的记录),这些就是你要找的结果。
内容的提问来源于stack exchange,提问作者Mariomaxi
相关产品推荐
相关产品推荐

