问题标签 [on-duplicate-key]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
php - 重复键仍在 MYSQL 中作为条目插入
row
即使它已经存在,它也会不断添加,我不明白为什么?
任何人都可以帮忙吗?
python - 添加到插入的 sqlalchemy 文字文本
我试图让 sqlalchemy 在插入时接受一些更复杂的行为,但无法找出惯用的方法。为了简化事情,我只是想在查询末尾添加一个文字字符串,但找不到有效的方法。我已经看到“text()”函数用于将字符串文字添加到查询中,但它不会像我使用它的方式那样工作。这是我正在尝试做的一个例子(这不会编译,但至少抓住了这个想法......)
任何建议将不胜感激。
mysql - MySQL如何仅在保存或插入新数据时更新updated_by字段
我有一个前端 PHP 应用程序,它将数据保存在 MySQL 数据库中。该updated_by
值将发生变化,因为它将是正在更新记录的用户。仅当我们为任何其他列 ( , ) 插入新值并且插入或更新记录时
,我才想更新该列。updated_by
sname
scol2
欢迎任何帮助,非常感谢:)
表信息:
- 表:
test
- 唯一索引:列
sname
和scol2
- 列:
sname
,scol2
,updated_at
,updated_by
- 值: name1、col2、03-02-2013、phpuser1
MySQL 5.6 信息:
INSERT INTO.. ON DUPLICATE KEY UPDATE:
“..如果将行作为新行插入,则返回 1,如果更新现有行,则返回 2...”
示例:用户将更新或插入记录:
INSERT INTO test(sname) VALUES("name1") ON DUPLICATE KEY UPDATE sname="name1", scol2="col2";
结果: 上面的查询不会更新任何东西。完美的。
INSERT INTO test(sname) VALUES("name1") ON DUPLICATE KEY UPDATE sname="name1", scol2="col22";
结果:上述查询将更新列:scol2
和updated_at
.Perfect。
如何在一个查询中自动更新 updated_by 列?
INSERT INTO test(sname) VALUES("test1") ON DUPLICATE KEY UPDATE sname="name1", scol2="col2", updated_by="phpuser2222";
这不起作用,它会在每次列updated_by
和可能的解决方案时更新两个查询:updated_at
- 插入记录:
INSERT ... ON DUPLICATE KEY UPDATE...
- 在我的 PHP 应用程序中获取返回值以了解它是否已[更新或插入],然后
updated_by
使用第二个查询更新该字段:INSERT INTO test(updated_by) VALUES("phpuser2222");
oracle - 如何在 unix 中编写忽略 dupkey 命令?
我知道在 oracle 中,这是一种忽略 dupkey 的写法,例如
有没有办法做同样的事情,但使用 unix 命令?我认为有办法,WHENEVER SQLERROR EXIT SQL.SQLCODE
但我不确定,我不知道该怎么做。谢谢
mysql - 从 ON DUPLICATE KEY UPDATE 获取插入/更新行数
我有一个尝试插入记录的语句,如果它已经存在,它只是更新记录。
完整的语句有多个插入,我希望根据 UPDATE 计算 INSERT 的数量。我可以用 MySQL 变量来做到这一点吗,我在搜索后还没有找到一种方法来做到这一点。
php - 在忽略重复键的情况下将数据从一个表插入到另一个表
我有两个 MySQL 表。第一个表有一个 cron 作业正在运行,它每五分钟更新一次。当 cron 作业运行时,它将所有数据从第一个表移动到第二个表(存档表),截断第一个表,然后更新 CSV 文件中的信息,该文件在某个 URL 处不断更新。我通过将结构从一个表复制到下一个表来制作表格(因此它们的结构相同)。
这是我正在运行的代码,它有效:
问题是,cron 作业运行如此频繁,以至于它并不总是会完全更新,因此它会在 table2 中生成重复条目。这是我试图使用的代码,但它似乎不起作用:
我已确保两个表的键相同(id)。
这些操作不能一起工作还是我的语法在某个地方有错误?我想尝试一次性运行这些操作,而不是更新表,然后运行不同的操作来消除重复项。
谢谢你的帮助!
oracle - How can i ignore dupkey with sqlplus?
I want to write a sql plus error for when the oracle find a record, or more records, that already exist and just ignore it/them. This is a example:
In this example sqlplus controls if the variable $sqlError
contains a value different from spaces. How can i change this condition put the DUPKEY
error? Thanks
mysql - 如何在 FIND_IN_SET 中插入或更新所有值并更新 NOT FIND_IN_SET On Duplicate Key 更新
这是我想做的事情:
称为部门的表与称为员工的表具有多对多关系。因此,表 department_employees 具有列:department_id、employee_id、is_active。
索引department_id,employee_id 为pk。
我得到一串员工 ID,例如“12,15,18,19”。我得到部门ID。
我调用了一个 Mysql 存储过程(例程),它应该:
- 将所有员工插入部门
- 如果它们存在且未激活,则激活
- 应停用所有其他员工
创建过程(在 @dep_id INT 中,在 @emp_ids 文本中)
INSERT INTO TBL_DEPARTMENT_EMPLOYEES (DEPARTMENT_ID, EMPLOYEE_ID, IS_ACTIVE) SELECT @dep_id, EMPLOYEE_ID, 1 FROM TBL_EMPLOYEES WHERE FIND_IN_SET(EMPLOYEE_ID, @emp_ids) ON DUPLICATE KEY UPDATE IS_ACTIVE=1;
UPDATE TBL_DEPARTMENT_EMPLOYEES SET IS_ACTIVE=0 WHERE DEPARTMENT_ID=@dep_id 而不是 FIND_IN_SET(EMPLOYEE_ID, @emp_ids);
只有第一个查询运行,我猜第二个查询由于锁定或其他原因而无法运行,我尝试了 TRANSACTION - COMMIT 技巧,没有奏效。我想也许这里有一位很棒的人可以提供帮助,或者 eben 让这一切都在一个查询中运行。谢谢!
mysql - MySQL INSERT 重复键 UPDATE 与 SELECT
我有如下查询
引发以下错误
1093 - 您不能在 FROM 子句中为更新指定目标表“连接”
显然,我不能在insert into on duplicate update
语法中包含 SELECT 子句,但我真的宁愿这样做,而不是运行 2 个查询。谁能告诉我我该怎么做?
mysql - 我可以在不使用 auto_increment 值的情况下在 DUPLICATE KEY 上使用 INSERT INTO ...吗?
我正在尝试编写一个查询来检查记录是否存在(基于几个子句而不是唯一标识符)如果这样的搜索返回记录,那么我需要更新所有找到的记录,如果没有找到那么我需要插入记录。请注意,我不能使用 IF EXISTS 因为我正在尝试查询客户端脚本而不是服务器端。所以我想到了 INSERT INTO .... ON DUPLICATE KEY
我可以在不知道行键标识符的情况下执行此操作吗?因此,如果我找到 accountid = 17 和 name = 'Mike' 的记录,然后如果没有带有这 2 个子句的记录,则更新它以使名称为“Mike A”,然后插入一条记录。
这是给我一个语法错误的尝试
这种方法可以处理我想要做的事情吗?如果是,那么您能纠正我的语法吗?
谢谢