Mysql UPDATE ON DUPLICATE KEY 仅插入

2024-03-15

我正在尝试运行一个查询,以便它将插入或更新重复项。我正在为重复项使用唯一索引,但我似乎无法让它工作。它还增加了新记录。希望一些新的目光能够指出我的问题。谢谢。

这是我的架构

CREATE TABLE IF NOT EXISTS `pricing_puchasing` (
  `custno` varchar(6) DEFAULT NULL COMMENT 'customer code',
  `recipe` varchar(15) DEFAULT NULL,
  `item` varchar(120) NOT NULL COMMENT 'Item Code from dProduce',
  `unit_weight` double(12,4) DEFAULT NULL,
  `case_cost` double(12,4) DEFAULT NULL COMMENT 'Projected cost of item',
  `cost_per_lb` double(12,4) NOT NULL,
  `projected_price` float(12,3) DEFAULT NULL COMMENT 'projected Price',
  `projected_margin` float(12,3) DEFAULT NULL COMMENT 'Projected Margin',
  `trend` tinyint(1) DEFAULT NULL COMMENT 'Trend status 1=up, 0=down',
  `note` varchar(255) DEFAULT NULL COMMENT 'Note about the data',
  `week_of` date NOT NULL COMMENT 'Week of this data',
  `approved` tinyint(1) DEFAULT NULL COMMENT 'approval flag',
  `last_edited_from` varchar(20) NOT NULL COMMENT 'identifier to know where it was last saved from',
  `saved_at` datetime NOT NULL COMMENT 'Date time of save/update',
  `saved_by` int(11) NOT NULL COMMENT 'Created by user ID'
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='Stores pricing purchasing data';


ALTER TABLE `pricing_puchasing`
 ADD UNIQUE KEY `custno_recipe_item_week_of` (`custno`,`recipe`,`item`,`week_of`), ADD KEY `custno` (`custno`);

这是我正在测试的查询:

INSERT INTO pricing_puchasing 
    (recipe,item,unit_weight,case_cost,cost_per_lb,trend,note,week_of,saved_at,saved_by,approved,last_edited_from) 
VALUES 
    ('APPLEGRRAW','APPLEGRRAW',40.00,100.01,2.50,0,'','2014-07-28',NOW(),1,NULL,'purchasing') 
ON DUPLICATE KEY UPDATE 
    unit_weight=40.00,case_cost=100.01,cost_per_lb=2.50,trend=0,note='',saved_at=NOW(),saved_by=1,approved=NULL,last_edited_from='purchasing'

EDIT我解决了 custno 丢失的问题,但插入重复项时仍然遇到问题。我创建了一个sqlfiddle http://sqlfiddle.com/#!2/d92b79/1。这次我用 2 个 NULL 值进行测试,但仍然不行...这是我的架构还是我的查询仍然存在问题?


A NULL值不被认为是“唯一的”。唯一索引中的第一列是custno,您没有在 INSERT 中为该列提供值,因此默认值 NULL 将用作该列的值。

由于NULL值不被认为是唯一的,因此INSERT不会抛出重复键异常。

尝试使用 custno 列的非 NULL 值。


另外,您还可以使用特殊的VALUES()语句的 UPDATE 部分中的函数,以引用 INSERT 中提供的值。

ON DUPLICATE KEY UPDATE 
    unit_weight=VALUES(unit_weight),case_cost=VALUES(case_cost)

http://dev.mysql.com/doc/refman/5.5/en/miscellaneous-functions.html#function_values http://dev.mysql.com/doc/refman/5.5/en/miscellaneous-functions.html#function_values

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Mysql UPDATE ON DUPLICATE KEY 仅插入 的相关文章

  • 如何向 MySQL 中的 ENUM 类型列添加更多成员?

    MySQL 参考手册没有提供关于如何执行此操作的明确示例 我有一个 ENUM 类型的国家 地区名称列 我需要向其中添加更多国家 地区 实现此目的的正确 MySQL 语法是什么 这是我的尝试 ALTER TABLE carmake CHANG
  • 如何获取列中每个不同值的计数? [复制]

    这个问题在这里已经有答案了 我有一个名为 posts 的 SQL 表 如下所示 id category 1 3 2 1 3 4 4 2 5 1 6 1 7 2 每个类别编号对应一个类别 我将如何计算每个类别出现在帖子中的次数一条 SQL 查
  • 在不使用 PHP 的情况下将 MYSQL 中的表字段更新为其值加上常量

    我想表演一个UPDATE in MYSQL其中我获取一个字段值 添加一个常量并将新值保存在同一字段中 假设我们有一个名为OldValue在一个名为aTable 伪代码可能是 UPDATE aTable SET OldValue OldVal
  • SQL选择符号||是什么意思意思是?

    什么是 在 SQL 中做什么 SELECT a b AS letter 表示字符串连接 不幸的是 字符串连接不能在所有 sql 方言之间完全移植 ANSI SQL 中缀运算符 mysql concat 可变参数函数 caution 表示 逻
  • 无法在 mysql 表中的值中使用破折号(-)[重复]

    这个问题在这里已经有答案了 我一直在尝试从 python 将数据插入 MYSQL 表 我的sql表中的字段是id token start time end time和no of trans 我想存储使用生成的令牌uuid4在令牌栏中 但由于
  • 查询查找表中姓名和号码之间的重复项

    SELECT count lower name number FROM tbl GROUP BY lower name number HAVING count gt 1 输入表1 slno name number 1 aaa 111 2 A
  • 如何在 MySQL 中使用 INET_ATON 进行通配符搜索 IP 地址?

    我发现这个方法可以使用 INET ATON 将 IP 地址作为整数存储在 MySQL 数据库中 https stackoverflow com a 5133610 4491952 https stackoverflow com a 5133
  • SQL查询:按字符长度排序?

    是否可以按字符总数对sql数据行进行排序 e g SELECT FROM database ORDER BY data length 我想你想用这个 http dev mysql com doc refman 5 0 en string f
  • Mysql:my.cnf中的修改不生效

    我已经更新了my cnf我的数据库文件包含以下行 max connections 200 之后我停止并启动 mysql 服务以使更改生效 但由于某种原因 此更改不会影响数据库 因为如果我运行 mysql gt select max conn
  • 我应该将标签存储在文本字段还是单独的表中?

    我有一个表 其中的行如下所示 id path tags 1 pictures pic1 jpg car bmw 3 pictures pic2 jpg cat animal pussy 4 pictures pic3 png gun 基本上
  • 如何将Hive数据表迁移到MySql?

    我想知道如何将日期从 Hive 转移到 MySQL 我看过有关如何将 Hive 数据移动到 Amazon DynamoDB 的示例 但没有看到有关如何将 Hive 数据移动到 MySQL 等 RDBMS 的示例 这是我在 DynamoDB
  • varchar(20) 和 varchar(50) 相同吗?

    我看到评论 如果 varchar 20 列中有 5000 万个 10 到 15 个字符之间的值 而 varchar 50 列中有同样的 5000 万个值 它们将占用完全相同的空间 这就是重点varchar 而不是 char 有人可以告诉我原
  • 编写多个mysql脚本

    是否可以在复合脚本中包含其他 mysql 脚本 理想情况下 我不想为包含的脚本创建存储过程 对于较大的项目 我想分层维护几个较小的脚本 然后根据需要组合它们 但现在 我很乐意学习如何包含其他脚本 source是一个内置命令 您可以在 MyS
  • 使用外部硬盘写入和存储 mysql 数据库

    我已经设置了 mysql 数据库在我的 Mac 上使用 java 和 eclipse 运行 它运行得很好 但现在我将生成大约 43 亿行数据 这将占用大约 64GB 的数据 我存储了大量的密钥和加密值 我有一个 1TB 外部我想用作存储位置
  • 尝试在本地主机上测试我的 php 文件,但只出现一个空白页面,没有错误消息

    我正在运行 Apache 和 mySQL 因为我检查了所有日志 似乎没有任何错误 我的目标是每当有新的表单条目时就向特定地址发送电子邮件 我对后端和 PHP 缺乏经验 所以我不太确定哪里出了问题 任何帮助将不胜感激
  • mySQL 基于不同表的 SELECT(计数)更新表

    我有一个课程表和一个科目表 CLASS class id class name subject id date time imagine some rows here SUBJECT subject id subject name curr
  • MySQL按总和连接表问题

    我在连接表时遇到问题 以下是示例表 表A 30行 ID Name Description 1 Type Unicode Art 2 Header Spreadsheet 3 Auto Align Off 表B 100行 ID Name De
  • 为通用字符选择表排序规则

    我正在开发一个需要存储通用字符的后端 我选择了utf8mb4用于此目的的表编码 我还必须选择表格排序规则 最直接的选择是选择utf8mb4 general ci表整理 除了一般的排序规则之外 还有大约20种其他排序规则可供选择 更具体的排序
  • 自定义 php 论坛 - 显示新的/未读的帖子

    我自己使用 php 编写了一个自定义论坛脚本 我决定不使用 phpbb 和其他工具 因为我希望我所做的事情具有 100 的灵活性 不过我遇到了一个问题 如何向用户显示帖子是否是新的 未读的 我想到了两种解决方案 1 饼干 2 数据库 我不想
  • 查询中的存储过程

    有一个程序获取文件列表 顾名思义 返回一个文件列表以及更多选项 那么是否可以在查询选择中使用此过程 像这样的东西 select Field1 from Image where Field2 IN call GetFileList 你应该把它

随机推荐

  • com.mysql.jdbc.exceptions.MySQLNonTransientConnectionException:当 autocommit=true 时无法调用回滚

    我在我的应用程序中使用 Jboss 5 0 和 mysql 并且会有很多并发操作 并且数据库包含相当多的记录 这个错误经常出现 时不时地 com mysql jdbc exceptions MySQLNonTransientConnecti
  • 如何在 NodeJs 中运行 SOAP 请求?

    起初这听起来像是一个重复的问题 但我已经浏览了我找到的所有博客 教程 视频 但没有一个真正说明了如何运行该请求 示例 对于 RESTful 请求 您在 NodeJs 中编码 点击路由 https localhost 3000 api get
  • 如何使用 junit 测试 if 语句?

    我似乎无法在网上找到任何解决此问题的教程 我有这个if陈述 if basket getCustomerId null Basket exBasket findBasketByCustomerId basket getCustomerId i
  • 如何使用点击手势显示/隐藏 pageViewController 上的状态栏(iOS8 / Swift)

    浏览所有类似问题的解决方案 我一直试图得到statusBar通过点击手势显示 隐藏 我已经设定View controller based status bar appearance NO在 plist 中 我在我的中尝试了以下代码DataV
  • HTML / CSS:遇到有关网站宽度/高度的问题

    我正在建立一个网站 为人们访问的区域做广告 作为我自己的一项任务 我花了一些时间尝试将迄今为止所做的所有工作都放在一页上 我希望没有滚动条 我不想让滚动条不可见等等 我的意思是让网页适合浏览器的一页 而用户无需出于美观目的而滚动 我尝试过调
  • 如何在Windows服务中检测从睡眠模式唤醒?

    再会 我编写了一个 Windows 服务 它检测 USB 闪存驱动器连接并对连接的驱动器执行某些操作 现在经过测试 我需要在从睡眠模式唤醒后重新处理设备 当服务作为 Windows 程序工作时 我解决了这个问题 为了解决我另外处理DBT D
  • 从 Haskell 代码生成 LLVM IR

    我的目标是获取不同语言 主要是 C C Obj C 和 Haskell 的源代码 并提供有关它们的各种统计信息 例如变量 函数 内存分配 复杂性等的数量 LLVM 似乎是一个完美的工具 因为我可以为这些语言生成位码 并且通过 LLVM 的可
  • .NET 中的别名

    是否可以为现有类型创建别名并在整个项目中使用该别名 例如 创建 CustomerID System UInt32 并使用 CustomerID 作为数据类型 版本 NET Framework 4 0 使用 using 关键字 我们可以创建别
  • Jibx - 如何使用值和属性解组/编组标签?

  • Windows 应用商店应用程序和 F#

    我正在尝试使用 F 创建一个可移植库以与 Windows 应用商店应用程序一起使用 我用一个类创建了一个 fs 文件 module FunctionalRT open System Net open System IO type WebHe
  • Xcode 10 - 界面生成器文档

    我无法将现有故事板的 Interface Builder Document 版本更改为 Xcode 10 0 选择 Xcode 10 0 出现提示时保存并关闭并重新打开我的故事板后 它总是恢复到 Xcode 9 0 即使创建新的故事板 它也
  • 在 MongoDb 中,如何对文档中存在的内部字段进行排序?

    我的文档看起来像这样 field1 somevalue name xtz nested documents array of nested document x 1 y 2 first nested document x 2 y 3 sec
  • 在R中使用正则表达式捕获字符串的一部分

    我有这些字符串 myseq lt c ALM GSK LN 06 ID AS04 LV 06 ID png AS04 SP 06 IP png 我想做的是捕获序列的一部分 ALM GSK LN ID AS04 LV ID AS04 SP I
  • ASP.NET + 访问路径被拒绝

    我有一个 ASP NET 应用程序 它尝试在运行时在 Web 服务器上写入文件 在我的开发环境中 这是有效的 但是 当我将其部署到生产服务器并执行代码时 我收到一条错误消息 Access to the path C Inetpub wwwr
  • 活动更改之前的动画

    我试图做一些简单的事情 但我不明白为什么它不起作用 我想做的是 当我触摸 ImageView 时 它会在上面显示动画 然后 只有当该动画结束时 它才会开始新的活动 相反 发生的情况是新活动立即开始并且不显示动画 这是动画 xml
  • java swing中N个jtable的同步滚动

    我需要将 N 个表并排排列在网格窗格中 前提是所有 jtable 的滚动窗格高度保持相同 现在我想同步所有 jtable 的滚动 这意味着如果我滚动第一个 jtable 那么其余的 jtable 应该自动滚动相同的量 有人对此有任何想法吗
  • Net::HTTP 对 HTTPS 请求的响应极其缓慢

    由于某种原因 在我的开发机器上 通过 Net HTTP 执行的 HTTPS 请求的响应非常非常慢 我尝试过 RestClient 和 HTTParty 它们都有同样的问题 它似乎不知从何而来 我已经提出了数百次这些请求 没有任何问题 但今天
  • Sql连接查询

    我有三张桌子 tblLink LinkId LinkName GroupId SubGroupId GroupId 和 SubGroupId 是 tblGroup 和 tblSubGroup 中的外键tblGroup 组ID 组名称 tbl
  • 在 Python 中查看 Popen 管道流

    背景 Linux 上的 Python 2 6 6 DNA 序列分析流程的第一部分 我想从已安装的远程存储 LAN 读取可能经过 gzip 压缩的文件 以及它是否经过 gzip 压缩 gunzip 将其压缩到流中 即使用gunzip FILE
  • Mysql UPDATE ON DUPLICATE KEY 仅插入

    我正在尝试运行一个查询 以便它将插入或更新重复项 我正在为重复项使用唯一索引 但我似乎无法让它工作 它还增加了新记录 希望一些新的目光能够指出我的问题 谢谢 这是我的架构 CREATE TABLE IF NOT EXISTS pricing