You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

MySQL使用NOT IN查询表间差异数据时报#1064语法错误,求解决

哦,这个问题我碰到过,你的SQL语法问题很明确——NOT IN前面漏掉了要判断的字段FileId!

原语句里WHERE NOT IN (...)的写法不对,数据库根本不知道你要拿哪个字段去和子查询的结果对比。正确的写法应该明确指定FileId不在子查询返回的集合里:

SELECT FileId FROM PersonalDetail 
WHERE FileId NOT IN (SELECT FileId FROM FamilyDetail)

不过这里要提个小坑:如果FamilyDetail的FileId字段存在NULL值,NOT IN会返回空结果(因为SQL里任何值和NULL比较都是未知)。所以更稳妥的写法是用NOT EXISTS,它不受NULL的影响,性能也通常更好:

SELECT pd.FileId FROM PersonalDetail pd
WHERE NOT EXISTS (
    SELECT 1 FROM FamilyDetail fd
    WHERE fd.FileId = pd.FileId
)

另外,用LEFT JOIN加IS NULL的写法也能实现同样的需求,逻辑上更直观一些:

SELECT pd.FileId FROM PersonalDetail pd
LEFT JOIN FamilyDetail fd ON pd.FileId = fd.FileId
WHERE fd.FileId IS NULL

这三种写法都能帮你拿到PersonalDetail中不存在于FamilyDetail的FileId,根据你的数据量和索引情况选合适的就行~

内容的提问来源于stack exchange,提问作者kobi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.29 08:57:36