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

INSERT语句未插入任何行,game与gamePlayers表缺失数据插入失败

问题原因

你遇到的问题有两个最常见的诱因:

1. NOT IN 碰到NULL值导致筛选失效

这是SQL三值逻辑的经典坑:当NOT IN后面的子查询返回的结果集中存在任意NULL值时,整个NOT IN的判断结果会变为UNKNOWN,不会匹配到任何行,自然筛选不出要插入的90条数据。
如果你之前执行的查询语句确实能查出90条记录,大概率是两次执行之间有其他操作修改了gamePlayers表的数据,导致执行插入语句时,子查询返回的gameId结果集里出现了NULL值。

2. 插入语句未指定目标列

你写的INSERT语句没有显式指定插入的目标列,如果gamePlayers表的列创建顺序不是playerType在前、gameId在后,就会导致你SELECT出来的两个值和表的列顺序不匹配,要么触发字段约束(比如类型不匹配、外键校验失败、值范围校验失败)导致整个插入回滚,要么插入错误的值不符合预期。

修复方案

建议使用更稳定的NOT EXISTS写法替代NOT IN,同时显式指定插入的列名,避开上面两个坑:

INSERT INTO dbo.gamePlayers (playerType, gameId)
SELECT 1, p.id 
FROM dbo.game p
WHERE NOT EXISTS (
    SELECT 1 FROM dbo.gamePlayers gp WHERE gp.gameId = p.id
)

你也可以先单独执行上面语句里的SELECT部分,确认是否能返回你预期的90条记录,再执行插入操作。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 13:06:04