将所有内容移至除 id 之外的另一个表 [重复]

Posted

技术标签:

【中文标题】将所有内容移至除 id 之外的另一个表 [重复]【英文标题】:move all to another table except id [duplicate] 【发布时间】:2018-01-25 13:15:18 【问题描述】:

将记录从posts 移动到archive

$stmt = $db->prepare(
    "insert into archive (date, art, img, vid, title, subtitle, story, tags, status, user, pos, titlex, inde)
    select date, art, img, vid, title, subtitle, story, tags, status, user, pos, titlex, inde from posts
    where id = :aid"
);

不要告诉我没有类似的选项:move * except id...

id 不可移动,因为可能与存档 ID 发生冲突。

【问题讨论】:

只是想知道,你为什么想要这个。如果需要,可以使用 join 获取数据? @Shadow 除非我完全误读了这个问题,否则它与您将其标记为重复的问题完全不同。 @user2486,我不想get,而是move 数据。 @Shadows,请仔细阅读我的帖子。 Move 是一个insert ... select ... 语句,因此重复应用。 【参考方案1】:

没有像move 这样的选项。您需要将其插入到一个表中,然后从另一个表中删除。

不过,您可能需要重新考虑您的餐桌设计。如果您想要归档某些内容,而不是让两个单独的表包含相同类型的数据,您应该在 posts 表中添加一个标志以指示条目是否已归档。像这样的:

ALTER TABLE posts ADD archived BOOLEAN DEFAULT 0;

当帖子正常添加但未存档时,archived 列设置为 0。当您想要存档某些内容时,只需运行 UPDATE 语句,将该记录设置为 1。

【讨论】:

以上是关于将所有内容移至除 id 之外的另一个表 [重复]的主要内容,如果未能解决你的问题,请参考以下文章

MySql:更新除第一行之外的所有内容[重复]

如何使用熊猫将一列移动到除标题之外的另一列[重复]

Mandrill - 由于 [警告:邮件包含重定向 URL 内容],邮件被移至垃圾邮件

条件删除表中重复的列

我如何使用一个变量的内容来创建另一个变量的名称? [重复]

RecyclerView中的按钮无法单击或选择[重复]