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

MySQL批量插入:仅当SomeId未存在时插入(复合唯一键场景)

批量插入满足条件的记录

可以通过 NOT EXISTS 子查询结合批量值列表的方式实现单条SQL插入,核心逻辑是先检查目标 SomeId 是否未在表中出现过(无论 UsedForUniqueKey 取何值,包括NULL),再执行插入:

INSERT INTO testinserttable (SomeId, UsedForUniqueKey)
SELECT val.SomeId, NULL
FROM (
    VALUES ('Bye'), ('ola'), ('Hi')
) AS val(SomeId)
WHERE NOT EXISTS (
    SELECT 1
    FROM testinserttable t
    WHERE t.SomeId = val.SomeId
);

逻辑说明

  • VALUES ('Bye'), ('ola'), ('Hi') 生成待插入的 SomeId 数据集;
  • NOT EXISTS 子查询验证当前待插入的 SomeId 未在表的任何记录中出现过(因为复合唯一键中 SomeId 是非NULL的,只要表中存在该 SomeId,无论 UsedForUniqueKey 是否为NULL,都不满足插入条件);
  • 插入时 UsedForUniqueKey 设为 NULL,如果需要特定默认值可替换为对应值。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.12 01:10:55