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

如何实现查询行数不足2行时自动插入数据的SQL语句?

合并查询与条件插入的SQL逻辑

你可以通过带条件的INSERT语句直接把判断逻辑和插入操作合并为一条SQL,无需分开执行两次操作。以下是适配MySQL的实现方案:

INSERT INTO document_category (document_id, category_id, is_main_category)
SELECT 210, 181, 0
FROM dual
WHERE (SELECT COUNT(*) FROM `documents` WHERE document_id = 210) < 2;

逻辑说明:

  1. 子查询(SELECT COUNT(*) FROM documents WHERE document_id = 210)会统计documents表中document_id=210的记录总数
  2. 当统计结果小于2时,SELECT 210, 181, 0返回一行数据,触发INSERT操作将这条数据写入document_category表
  3. 如果统计结果大于等于2,SELECT无数据返回,INSERT不会执行任何操作

额外优化(可选):

如果需要避免向document_category插入重复记录(比如已存在document_id=210且category_id=181的条目),可以先给表添加唯一约束:

ALTER TABLE document_category ADD UNIQUE KEY idx_doc_cat (document_id, category_id);

之后改用INSERT IGNORE来跳过冲突:

INSERT IGNORE INTO document_category (document_id, category_id, is_main_category)
SELECT 210, 181, 0
FROM dual
WHERE (SELECT COUNT(*) FROM `documents` WHERE document_id = 210) < 2;

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.03 17:45:48