mysql同一表中交换两个字段的值

背景:同一表中,部分记录的创建时间晚于更新时间。所以针对创建时间晚于更新时间的记录,交换此两字段的值。否则保持原样。

  • 第一次尝试
    使用命令UPDATE dcdict SET updateTime=IF(updateTime>createTime,updateTime,createTime), createTime=IF(updateTime>createTime,createTime,updateTime);。这样导致创建时间晚于更新时间的记录最终创建时间和更新时间都是创建时间。
    因为update首先更新第一个字段值,即updateTime,当创建时间晚于更新时间时,updateTime值变为创建时间。然后更新第二字段值createTime,此时更新时间和创建时间已经相等了,故创建时间无变化。
  • 解决方案
    首先复制一份相同表;
    使用命令UPDATE dcdict a,dcdict_copy b SET a.updateTime=IF(b.updateTime>b.createTime,b.updateTime,b.createTime), a.createTime=IF(b.updateTime>b.createTime,b.createTime,b.updateTime) WHERE a.id=b.id;
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容