问题标签 [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.

0 投票
1 回答
477 浏览

mysql - MySQL:更新一条记录,在重复键上留下 NEWER 一个,并删除 OLDER 一个?看里面

这里有张桌子:

以及那里的一些价值观:

我想将 user_id = 108325 的所有记录委托给 user_id = 51082,如果两个用户的 thing_id 字段相同,则只保留较新的字段(lock_date1 > lock_date2),这样我就有以下结果:

请注意,51082 现在有一个更新的记录:lock_date = '2013-02-05 19:30:03' 而不是 '2012-03-16 00:39:12'。

那么,我怎样才能更新一行,并在重复键上留下较新的键(通过某个特定字段)?

谢谢!

0 投票
6 回答
1707 浏览

php - PHP代码计算两个单词中的重复字母

嗨,我是 php 的新手,我想问一下如何编写一个代码,将重复字母的数量放在两个单词中。例如:“apple”和“ball”总共有 7 个相同的字母(a、a、p、p、l、l、l)提前谢谢你 :)

0 投票
1 回答
440 浏览

java - 使用 LinkedHashMap java 创建三元组

我正在尝试使用 LinkedHashMap> 创建一个三元组模型,其中 Entry 是最后输入的二元组的条目(其结构是:LinkedHashMap

现在的问题是,作为一个映射,它不存储多个键(用现有键的新键值对覆盖现有键值对)。

我不确定多图是否对此有用?如果是这样,怎么做?

0 投票
1 回答
1995 浏览

mysql - MariaDB / MYSql 非描述语法错误,重复键更新

我收到一个非常非描述性的错误:

ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'VALUES (order_site_id, order_id, business_email, business_domain, sm_type, activ' at line 1

这是插入/更新

0 投票
1 回答
211 浏览

java - 休眠 - 在重复键上自动填充记录 ID

我正在从文本文件(一个投标一个文件)源加载投标列表,我想将其存储到数据库中。我有表 address_point、street、city 和 country,其中 address_point 是从许多表(组织、投标等)中引用的。

方案

当脚本正在加载数据并尝试在一个失败并出现错误的事务中保存相同的地址时 - 重复键。

例如脚本将添加新的投标,并且投标由新公司拥有。新投标和新公司具有相同的地址,这两个对象被插入到一个事务中,并且它们都包含相同的地址哪个城市已经存储在数据库中所以首先我必须找到这个组织的城市并将其替换为找到的对象或设置主要关键和做同样的招标。

下一个示例脚本将添加未存储在数据库中的城市的新投标和新组织,我必须检查该城市是否在数据库中。下一步是我必须比较这两个城市,如果城市相等,则将它们作为一个对象以避免重复键。

但是我有超过 3 个参考来解决招标、组织、旅游等交易中的要点。这两个示例仅适用于城市,而不适用于国家,地区,......所以设置条件有点混乱。

如何解决这个问题最有效的方法是什么?我已经定义了 isEqueal 和 hashCode 但我读过这些方法仅适用于集合。

0 投票
1 回答
662 浏览

mysql - 触发:在“ON DUPLICATE KEY UPDATE”期间读取 NEW.values 和 OLD.values

我正在尝试为 MySQL 中的单个表编写一个小型审计系统。

INSERT我在使用基本的//命令时很幸运UPDATEDELETE但是现在我对审计使用的表很感兴趣INSERT ... ON DUPLICATE KEY UPDATE

通过使用触发器ON BEFORE INSERT,我可以知道这个事件正在发生,但是我只能获得我感兴趣的一半数据。 NEW.values很容易获得,但我不知道如何获得OLD.values之前的数据。我想我可以使用NEW.ID现有表进行查询,但我不确定性能和可靠性。

我需要,OLD.values因为我为每个更改事件存储了旧值和新值,因为我在某个地方读到了折叠数据等的好主意......

MySQL 5.0(或更新的 GA 版本)有没有办法像我在UPDATE触发器中一样可靠地检索这些值?

编辑:另一个皱纹:

看起来NEW.values更新后的数据不匹配。它们匹配INSERT声明而不是ON DUPLICATE KEY UPDATE实际进入记录的数据。

0 投票
2 回答
48629 浏览

mysql - MySQL LOAD DATA INFILE 与 ON DUPLICATE KEY UPDATE

对于将大量数据加载到 MySQL 中,LOAD DATA INFILE是迄今为止最快的选择。不幸的是,虽然这可以以 INSERT IGNORE 或 REPLACE 的方式使用,但目前不支持 ON DUPLICATE KEY UPDATE。

但是,ON DUPLICATE KEY UPDATEREPLACE. 后者在存在重复项时执行删除和插入。这为密钥管理带来了开销。此外,自动增量 ID 在替换时不会保持不变。

ON DUPLICATE KEY UPDATE使用 LOAD DATA INFILE 时如何模拟?

0 投票
1 回答
86 浏览

mysql - 我可以结合 INSERT、JOIN 和 ON DUPLICATE KEY UPDATE

这是我今天的数据库结构......

inventory_transactionsquantity_offset存储具有负值或正值的库存变动。他们还有一个inventory_transaction_id

shipments存储装运,它们是inventory_transactions一组shipment_id

inventory_transactions和之间的关系shipments在一个名为的表中shipment_inventory_transactions

我希望能够做的是增加与给定相关联quantity_offset的 an (增加货件中给定库存项目的数量),如果该项目已经存在于货件中。inventory_transactionshipment

如果该项目不存在,请在inventory_transactions和中创建所需的行shipment_inventory_transactions

JOIN我认为and的某种组合ON DUPLICATE KEY UPDATE可以做到这一点,但我无法理解它。

为了简化情况,我正在考虑删除该shipment_inventory_transactions表,因为 shipping 和 inventory_transactions 之间的关系现在将是 1 对 1。这里唯一的问题是每个inventory_transaction 可以与发货或收据相关联,但不能同时与两者相关联。将它们存储在同一列中听起来很恶心。但是我不喜欢在每一行中都有一个额外的列,因为只会使用一个或另一个。

哇... 大脑转储完成。如果这是有道理的,并且您可以提供一个让我无法理解的明智答案,我将不胜感激。

0 投票
2 回答
7585 浏览

sql - 忽略重复项?

有没有办法查询该列并且只返回

如果我使用 Select Distinct 它会返回

我如何编写一个选择语句,如果存在重复,不要只选择一个,而是完全忽略具有该值的两个/所有行?但这是在左连接右侧的表中选择的单个列

0 投票
1 回答
691 浏览

c# - C# SQL 在左连接中选择右表仅返回唯一值,而不是每个值的一个实例

使用以下内容:

现在这一切都很好,除非 Table2 有多个 LocationID 值

我想忽略:

得到这个:

但我确实想要:

因为 LocationID 没有重复。

另外,我确实想要:

再次因为 LocationID 不重复。

如果我必须这样做或者它会更有效,我也愿意在之前从 TempDS 中删除这些行:

如果即使需要或者最有效地从 dgvQueryResult 中删除条目