mysql - MySQL停止插入基于字段值
问题描述
如果列具有特定值,我想做一个插入忽略。
假设我有一个简单的表,它记录了 PO 随时间的变化。每次更新 PO 时,我都需要在这张表上插入一条记录:
PONum | POLine | submittedBy | ... other columns
100 1 initial-value
100 1 TB
100 2 initial-value
在 PHP 页面上,我检查此表中是否存在 PO 编号。如果没有,我插入从另一个表中找到的所有采购订单行。我将提交的名称设置为“初始值”。
现在稍后,假设添加了 PO Line 3。我想再次检查我的检查,如果还没有第 3 行的初始值被提交的记录,则只插入第 3 行的新记录
INSERT IGNORE INTO PODetailCL (PONum, POLine, submittedBy, ... )
VALUES (100, 1, 'TB', ... ),
(100, 2, 'TB', ...),
(100, 3, 'initial-value', ...)
WHERE submittedBy <> 'initial-value' -- <- something like this but not sure of the syntax
解决方案
尝试使用条件插入多行:
INSERT INTO PODetailCL(PONum, POLine, submittedBy, ... )
SELECT (100, 1, 'TB', ... ), (100, 2, 'TB', ...),(100, 3, 'initial-value', ...)
FROM PODetailCL
WHERE EXISTS (SELECT * FROM PODetailCL WHERE submittedBy <> 'initial-value')
推荐阅读
- excel - 如何创建一个自动滚动并循环回到开头的 Excel 宏?
- wordpress - Timber 中如何使用 wordpress 标准
- docker - nanoserver:“错误:在 Docker 中找不到模块 node.exe”
- mysql - MySql 查询由多列和多个计数组合在一起
- javascript - 在 for 循环中获取数据(不是索引)
- testing - 我们应该如何结合覆盖标准?
- ruby-on-rails - 迁移 Heroku Pipeline Promotion 上的数据
- python - 使用python从xml文件中提取数据
- c - 获取和 mmap 的问题
- php - 根据字符串 php 中的特定单词获取字符串的特定部分