我需要更新表中所有行的作者 ID(它恰好是 WordPress wp_posts 表中的作者)。
如果我想更改作者 ID 1 -> 10,我可以这样做:-
UPDATE wp_posts SET post_author = 10 WHERE post_author = 1;
(注意——实际上我会使用 $wpdb 类,但这是底层 SQL,用户 ID 只是示例——我不能假设实际 ID 是什么)。
该更新工作正常。但是,如果在原始数据集中我已经有一个作者 ID=10,并且我需要将该作者更新为 ID=20,那么我就会遇到麻烦 - 我已经将所有 ID=1 更改为 ID=10 ,因此再次执行相同的更新将为所有最初具有作者 ID=10 和 ID=1 的帖子设置 ID=20。
我可以使用一组临时 ID 来解决问题,例如:-
UPDATE wp_posts SET post_author = 90010 WHERE post_author = 1;
UPDATE wp_posts SET post_author = 90020 WHERE post_author = 10;
UPDATE wp_posts SET post_author = 10 WHERE post_author = 90010;
UPDATE wp_posts SET post_author = 20 WHERE post_author = 90020;
但这感觉很难看,虽然我可能安全地为临时值选择了一些合适的高范围,但我真的应该首先检查它们不存在,这使得整个过程更加复杂。
有没有更优雅的方法来解决这个问题?