当前位置: 首页 > news >正文

SQL Server 批量插入脚本

需求是:把70 个 menuId,不仅插入 dg_Id = 1,而是要循环插入到指定的 20 个 dg_Id(1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,17,19,21,24,25)中。

SQL Server 批量插入脚本,直接一次性生成:

INSERT INTO Tab_A_DegreeMenu (dg_Id, menuId)
SELECT dg.dg_Id, m.menuId
FROM (VALUES(100),(110),(125),(150),(160),(170),(175),(180),(185),(195),(200),(210),(225),(310),(360),(10005),(10010),(11010),(11015),(11020),(11025),(11030),(12501),(12505),(12508),(12510),(12515),(12550),(15050),(16005),(16050),(17005),(17006),(17007),(17008),(17020),(17030),(17040),(17505),(17506),(17510),(17550),(18005),(18050),(18505),(18510),(18550),(19505),(19510),(19515),(19520),(19525),(20005),(20050),(21005),(21050),(22505),(22510),(31005),(31010),(31015),(31020),(31025),(36005),(36020),(36025),(36030),(36035),(36040),(36045)
) AS m(menuId)
CROSS JOIN (VALUES(1),(2),(3),(4),(5),(6),(7),(8),(9),(10),(11),(12),(13),(14),(15),(17),(19),(21),(24),(25)
) AS dg(dg_Id);

脚本说明

  1. VALUES (...) AS m(menuId) → 定义了例子中的 70 个 menuId

  2. VALUES (...) AS dg(dg_Id) → 定义了 20 个 dg_Id

  3. CROSS JOIN → 笛卡尔积,自动组合生成 20×70 = 1400 行数据。

  4. INSERT INTO Tab_A_DegreeMenu (dg_Id, menuId) → 批量插入。

这样,你就不用手工写 1400 条语句了 🚀。

带去重逻辑 的版本。我们用 NOT EXISTS 来避免重复插入相同的 (dg_Id, menuId) 组合:

INSERT INTO Tab_A_DegreeMenu (dg_Id, menuId)
SELECT dg.dg_Id, m.menuId
FROM (VALUES(100),(110),(125),(150),(160),(170),(175),(180),(185),(195),(200),(210),(225),(310),(360),(10005),(10010),(11010),(11015),(11020),(11025),(11030),(12501),(12505),(12508),(12510),(12515),(12550),(15050),(16005),(16050),(17005),(17006),(17007),(17008),(17020),(17030),(17040),(17505),(17506),(17510),(17550),(18005),(18050),(18505),(18510),(18550),(19505),(19510),(19515),(19520),(19525),(20005),(20050),(21005),(21050),(22505),(22510),(31005),(31010),(31015),(31020),(31025),(36005),(36020),(36025),(36030),(36035),(36040),(36045)
) AS m(menuId)
CROSS JOIN (VALUES(1),(2),(3),(4),(5),(6),(7),(8),(9),(10),(11),(12),(13),(14),(15),(17),(19),(21),(24),(25)
) AS dg(dg_Id)
WHERE NOT EXISTS (SELECT 1 FROM Tab_A_DegreeMenu t WHERE t.dg_Id = dg.dg_Id AND t.menuId = m.menuId
);

逻辑说明

  • CROSS JOIN 还是生成 20 × 70 = 1400 行候选数据。

  • WHERE NOT EXISTS (...) 会检查表中是否已有该 (dg_Id, menuId),有的话就跳过,避免重复插入。

  • 这样执行多次也安全,不会生成重复数据。

http://www.dtcms.com/a/353444.html

相关文章:

  • 中資券商櫃台系統搭建與開發技術分析
  • AI 大模型 “幻觉” 难题:为何会 “一本正经地说错话”,如何让它更靠谱?
  • 基于Cursor AI IDE的Vue3留言板系统实战:从零搭建到智能优化全流程
  • java数据类型获取长度方式总结
  • 【C++】C++11新特性第一弹(列表初始化、新式声明、范围for和STL中的变化)
  • Flutter 开发技巧 AI 快速构建 json_annotation model 的提示词
  • 使用git上传项目的步骤
  • 煤矸石检测数据集VOC+YOLO格式3090张2类别
  • This method can cause UI unresponsiveness if invoked on the main thread.
  • week5-[字符数组]数和
  • 【技巧】PostgreSQL自动转换类型 int转bool 转int
  • 苍穹外卖项目实战(日记十一)-记录实战教程及问题的解决方法-(day3-3)完善菜品分页查询功能
  • 怎么理解API?
  • 用户体验设计 | 什么是 AX?从 UX 到 AX 的演进
  • 数据结构——算法效率的度量(时间复杂度与空间复杂度)
  • Elasticsearch 启动反复重启排查实录:从“内存不足”到“vm.max\_map\_count 过小”
  • 图表可视化地理趋势-Telerik WPF Chart
  • 智能汽车制造:海康NVR管理平台/工具EasyNVR多品牌NVR管理工具/设备实现无插件视频监控直播方案
  • R语言贝叶斯方法在生态环境领域中的技术应用
  • 攻克 Java 分布式难题:并发模型优化与分布式事务处理实战指南
  • APP与WEB测试的区别?
  • 人工智能在医疗领域中辅助外科手术的应用综述
  • 【VSCode】使用VSCode创建Java C/S架构项目
  • 如何用Renix实现网络测试自动化: 从配置分离到多厂商设备支持
  • 【网络编程】NtyCo协程服务器的框架(轻量级的协程方案,人称 “小线程”)
  • 从浏览器无法访问到Docker容器的 FastAPI 服务地址【宿主机浏览器和容器不在同一个网络层面:端口映射】
  • 前端AI应用实践指南:从基础概念到高级实现
  • 云手机的未来发展怎么样?
  • 数据结构(C语言篇):(二)顺序表
  • 状态设计模式