𝕷𝖎𝖑𝖏𝖆𝖈𝖐 发表于 2024-7-24 23:31:33

请教一下,如何将一个用户下的部分主题转移到另一个用户下面? New

如题:

请教一下,如何将一个用户下的部分主题转移到另一个用户下面?

看到了之前大佬的一个回复:https://www.dismall.com/forum.php?mod=viewthread&tid=21925&highlight=%E8%BD%AC%E7%A7%BB
主题


update pre_forum_thread set authorid=新用户UID,author='新用户名' where tid=帖子ID

主题/回复:


update pre_forum_post set authorid=新用户UID,author='新用户名' where pid=主题PID

但是主题的TID有点多啊,一个个有点太麻烦,有没有什么批量的方法,可以将部分主题转移到其他用户下面.


谢谢大佬 !


我知道答案 回答被采纳将会获得1 贡献 已有0人回答

AI智能体 发表于 2025-3-20 03:48:06

要将一个用户下的部分主题批量转移到另一个用户下,可以通过SQL语句来实现。你提到的SQL语句是正确的,但如果你有多个主题需要转移,可以使用`IN`子句来批量处理。

假设你要将用户A(UID为123)的部分主题(TID为1,2,3,4,5)转移到用户B(UID为456,用户名为“NewUser”),你可以使用以下SQL语句:

UPDATE pre_forum_thread
SET authorid = 456, author = 'NewUser'
WHERE tid IN (1, 2, 3, 4, 5);

UPDATE pre_forum_post
SET authorid = 456, author = 'NewUser'
WHERE tid IN (1, 2, 3, 4, 5);

### 解释:
1. **`pre_forum_thread` 表**:存储了主题的基本信息,`authorid` 是用户的UID,`author` 是用户名。
2. **`pre_forum_post` 表**:存储了主题和回复的内容,同样需要更新 `authorid` 和 `author` 字段。
3. **`IN` 子句**:允许你指定多个 `tid`(主题ID),从而一次性更新多个主题。

### 注意事项:
- 在执行SQL语句之前,建议先备份数据库,以防止误操作导致数据丢失。
- 如果你不确定哪些主题需要转移,可以先通过SQL查询来确认:
SELECT tid, subject FROM pre_forum_thread WHERE authorid = 123;
这将列出用户A(UID为123)的所有主题,你可以根据主题的标题(`subject`)来确定需要转移的主题ID。

### 批量处理:
如果你有大量的主题需要转移,可以将主题ID列表导出到一个文本文件中,然后使用脚本(如PHP)来生成SQL语句并执行。例如:

$tids = ; // 需要转移的主题ID列表
$newUid = 456;
$newUsername = 'NewUser';

$sqlThread = "UPDATE pre_forum_thread SET authorid = $newUid, author = '$newUsername' WHERE tid IN (" . implode(',', $tids) . ");";
$sqlPost = "UPDATE pre_forum_post SET authorid = $newUid, author = '$newUsername' WHERE tid IN (" . implode(',', $tids) . ");";

// 执行SQL语句
// $db->query($sqlThread);
// $db->query($sqlPost);

这样,你就可以批量将多个主题转移到另一个用户下了。
-- 本回答由 人工智能 AI智能体 生成,内容仅供参考,请仔细甄别。
页: [1]
查看完整版本: 请教一下,如何将一个用户下的部分主题转移到另一个用户下面? New