【问题标题】:MySQL: how can i push data onto existing column data?MySQL:如何将数据推送到现有的列数据上?
【发布时间】:2020-04-29 08:35:14
【问题描述】:

si 有一个 db 字段,我想用它来跟踪间隔。我想在完成后将完成的间隔推送到 db 字段。即:

intervals = '10'
intervals = '1020'   <-- pushing 20 onto the field
intervals = '102040'   <-- pushing 40 onto the field
intervals = '102040SP'   <-- pushing SP onto the field

这些值永远不会递减(如果这是一个因素,顺序并不重要),所以我只是在寻找UPDATE 字段的方法,但我不知道该怎么做,因为@ 987654323@ 只是覆盖现有内容。我查看了CONCAT,但这适用于用户提供的变量,而不是现有数据和其他用户数据。如果我要编写一些 PSEUDO 代码,它可能看起来像这样:

UPDATE tbl PUSHTO intervals VALUE newInterval WHERE id='id' AND date='date'

所以。有人可以帮我吗?必须有办法做到这一点。 :)

【问题讨论】:

  • CONCAT(interval, newInterval) 有什么问题?
  • 我认为您必须提供这两个值。我不知道你可以只提供一个列名和一个值...

标签: mysql arrays push


【解决方案1】:

你想要的是一个带有连接的更新:

UPDATE tbl
SET interval = CONCAT(interval, newInterval)
WHERE id = 'id' AND date = 'date';

如果您想在newInterval 可能是null 的情况下进行更新,您可以尝试:

UPDATE tbl
SET interval = CONCAT(interval, COALESCE(newInterval, ''))
WHERE id = 'id' AND date = 'date';

【讨论】:

  • 但是interval 已经在数据库中了。 newInterval 是我想要推进或联系的 interval。这仍然有效吗?它如何从数据库中提取interval?好奇 如何 它是如何工作的。 :) 我还注意到,我错过了伪代码中的“s”...:P
  • SET 语句将自行替换interval,并在末尾连接newInterval。就是这样。
  • 好吧,废话。棒极了!我没有在文档中看到您可以像以前那样使用列名。我想,我必须深入挖掘。非常感谢!
  • 有没有办法检查newInterval 是否已经存在?我考虑的不是这个项目,而是未来适用的项目。
  • 如果newInterval 为空或null,则可以使用COALESCE 有效地“忽略”它。
猜你喜欢
  • 1970-01-01
  • 2021-06-18
  • 1970-01-01
  • 1970-01-01
  • 2014-10-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多