从 MySQL 中的“重复键更新”获取动态值

Posted

技术标签:

【中文标题】从 MySQL 中的“重复键更新”获取动态值【英文标题】:Get dynamic value from 'on duplicate key update' in MySQL 【发布时间】:2016-05-13 08:19:23 【问题描述】:

我有一个看起来像这样的存储过程:

DELIMITER ;;
  CREATE PROCEDURE test_proc(IN _key INT, IN _value VARCHAR(45), OUT _counter INT)

  BEGIN
    INSERT INTO test_table(key, value, counter)
    VALUES (_key, _value, 1)
    ON DUPLICATE KEY UPDATE
      value = _value,
      counter = counter + 1;

    SELECT counter FROM test_table WHERE key = _key INTO _counter;

  END ;;
DELIMTER ;

是否可以从插入语句中取出计数器而无需查询数据库?我的架构实际上比这要复杂得多,有数百万条记录和大量操作,所以我希望尽可能高效。

【问题讨论】:

【参考方案1】:

很遗憾,没有。您必须执行SELECT 查询。

【讨论】:

我需要从插入中取出动态计数器,而不是 ID。计数器只是数据库中的一列,用于跟踪记录更新的次数。 这就是为什么我们要更仔细地阅读,女士们,先生们。第一部分仍然存在;您必须使用SELECT 非常感谢!这就是我的想法,但无论如何都想问。如果你修正你的答案,我会投票等等。

以上是关于从 MySQL 中的“重复键更新”获取动态值的主要内容,如果未能解决你的问题,请参考以下文章

动态创建单选按钮并分配选定的值 PHP

MySQL 在 NodeJS 中的重复键更新

如何创建多个从同一个数组中获取值的动态下拉列表,而无需更改 Javascript 中的其他下拉列表

如何从数据库中获取值以为循环形式的输入创建动态名称?

从动态数据表中查找行中的最小值

从 MySQL 动态获取特定内容