当MySql数据不存在时,将数据从一个列复制到另一个列


Cron job to copy MySql data from one column to another if it doesn't exist

我遇到了一个问题,我试图创建一个从表中的列1复制到列2的cron作业。我需要使它,如果列1的数据已经在列2然后什么都不做,如果不是添加到列2。

有没有人对如何实现这一点有任何提示或建议?

当列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

看了你的新评论后,我建议如下

您可以在username和GUID列上创建一个UNIQUE索引,并尝试插入每一行。当用户名和GUID组合存在时,查询将失败并且不会插入记录。

如何在MySQL中指定多列的唯一约束?