我遇到了一个问题,我正在尝试创建一个从表1中的第1列复制到第2列的cron作业。我需要说明,如果第1列数据已经在第2列,那么什么都不做,如果没有添加到第2列。
有没有人对如何实现这一目标有任何提示或建议?
答案 0 :(得分:0)
当第1列中的数据等于第2列中的数据时,无论如何更新行有什么危害?
UPDATE table SET column2 = column1
数据总是在第2列中设置,但是当它已经是相同的数据时,第1列什么都没有改变
阅读完评论后,我建议如下:
删除第2列并创建一个名为previous_usernames
的新表
向该表添加3列
id
,user_id
和username
更改用户名时更新此表,而不是之后使用cron更新此表。这是不必要的复杂。
首先运行此查询INSERT INTO previous_usernames (user_id, username) (SELECT id, username FROM users WHERE id = ?)
然后运行此查询UPDATE users SET username = ? WHERE id = ?
如果您想确保正确存储旧用户名,可以使用transactions
阅读新评论后,我建议如下
您可以在用户名和GUID列上创建UNIQUE索引,并尝试插入每一行。当存在用户名和GUID组合时,查询将失败并且不插入记录。
How do I specify unique constraint for multiple columns in MySQL?