我在尝试创建一个从表中的第 1 列复制到第 2 列的 cron 作业时遇到了问题。我需要做的是,如果第 1 列数据已经在第 2 列中,则什么也不做,如果不添加到第 2 列。
有没有人对如何实现这一目标有任何提示或建议?
最佳答案
当第 1 列中的数据等于第 2 列中的数据时,更新该行有什么坏处?
更新表 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 = ?哪里 id = ?
如果您想确保正确存储旧用户名,您可以使用 transactions
阅读您的新评论后,我提出以下建议
您可以在用户名和 GUID 列上创建 UNIQUE 索引并尝试插入每一行。当用户名和 GUID 组合存在时,查询将失败并且不会插入记录。
How do I specify unique constraint for multiple columns in MySQL?
关于php - Cron 作业将 MySql 数据从一列复制到另一列(如果不存在),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33037144/