是否可以将通过条件计算出的值插入到mysql中?

Vmayer

我有一些使用MySQL连接器的C ++代码。我们的数据库是innodb。

代码的目标是找到一行,如果存在,则用新值对其进行更新,如果不存在,则进行插入。

当前,它正在执行一个明确的操作:“ select ... where ...”,然后根据是否找到记录进行插入或更新。

我最近发现了“ INSERT ... ON DUPLICATE KEY UPDATE”:https//dev.mysql.com/doc/refman/5.0/en/insert-on-duplicate.html,很高兴在这里应用它,以为我们可以以此改善性能。

首先,我是否认为性能可能会提高?

其次,我有一个问题。插入的字段之一是将同一记录的其他两个字段相除的结果。我需要考虑除以0的情况。

我正在尝试做这样的事情:

"INSERT INTO table (time_stamp, in_bytes, out_bytes, pct) VALUES(date + "," + inBytes + "," + outBytes + ", out_bytes/in_bytes)  ON DUPLICATE KEY UPDATE in_bytes = in_bytes + 0, out_bytes = out_bytes + 0, pct = out_bytes/in_bytes;"

不幸的是,如果in_bytes为0,则会出现以下错误:“错误1048(23000):列'pct'不能为空”。

对此可以采取任何措施吗?以某种方式提高了我们原始方法之外的性能?我曾考虑过要有一个用于计算pct字段的触发器,但这似乎可能无法提高性能。

瓦特夫

您可以使用任何所需的表达式。在这种情况下,您可以使用IF(condition,value when true,value when false)

pct = IF(in_bytes != 0, out_bytes/in_bytes, 42)

或者,对于奖励积分,您可以使用COALESCE做同样的事情

pct = COALESCE(out_bytes/in_bytes, 42)

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

Oracle:是否可以修剪字符串并计算出现次数,然后插入到新表中?

mySQL:是否可以将计算出的列与具有相同共享值的所有其他行的总和相加

通过在PIG中的同一块内计算出的条件值在FOREACH块内进行过滤

通过插入从其他列计算出的值来更新rails mass更新列

是否可以使用计算出的属性来计算Vue中的其他属性?

是否可以在 django REST 序列化程序中添加计算出的超链接?

是否可以根据条件将值插入到列中?SQL服务器

VBA“中”功能计算出错误的值

在表中查找值并计算出现次数

是否可以将值插入通过视图传递的表单中

在将数据发布到数据库中时,无法计算出django中的update_or_create方法

MYSQL / PHP计算出现次数

在行中显示计算出的度量?

在SQLAlchemy中打印计算出的距离

是否可以计算出卢森堡的“当前半小时”的开始时间?

为什么通过pROC Package的不同功能计算出的95%CI值不同?

插入后,EF Core实体中未更新计算出的主键

将数组从C / C ++传递到Fortran并返回计算出的数组

以 r 中的多个其他列为条件计算出现次数

使用从现有行计算出的值将新行添加到数据框

Scala将列表元素映射到根据先前元素计算出的值

如何在python 3.3.4中编写可以计算出矩形区域的程序?

如何在每年的表1中显示一条记录,然后将计算出的值自动关联到第二个表中?

在计算变量之前打印计算出的值

(SSAS)需要在其他计算中使用计算出的度量的总和,而不论它们是否符合条件

将字符串替换为根据数据帧中另一列的最大值计算出的值

如何将随机数组的值添加到另一个数组中,然后在计算出现的值的同时显示它们?C ++

在数据框 2 中搜索数据框 1 的值并计算出现次数

如何计算出现在表中的值的总数