【发布时间】:2018-03-15 07:11:47
【问题描述】:
尝试执行以下操作:如果当前行的列 c1 等于前行的 c1,则将列 c3 设置为前行的列 c2;否则,将 c3 设置为 NULL(或者不将其设置为任何值)。有人能告诉我为什么以下查询导致 c3 对于每一行都为空吗?
虚拟列只是为了能够设置变量@c1 和@c2,它们应该存储该行的c1 和c2 值以用于下一行。顺便说一句,我假设 c3 将首先更新是错误的吗,即它将获得 @c2 的先前值(在 @c2 被分配给当前 c2 之前)?
UPDATE t SET c3 = IF (c1 = @c1, @c2, NULL), dummy1 = @c1:=c1, dummy2 = @c2:=c2;
【问题讨论】:
标签: mysql variable-assignment user-variables