【问题标题】:INSERT INTO SELECT - replace one field with NULLINSERT INTO SELECT - 用 NULL 替换一个字段
【发布时间】:2012-11-27 17:28:16
【问题描述】:

我正在尝试执行 INSERT INTO SELECT 语句,但在执行此操作时,我希望 SELECT 语句中的某个字段返回 NULL 而不是原来的内容。

到目前为止我有:

INSERT INTO `archive`
    SELECT *
    FROM `product`
    WHERE `id` = ?

我考虑过使用以下内容,但它不起作用,因为它添加了一个额外的字段而不是替换现有的字段:

INSERT INTO `archive`
    SELECT *, '' AS `image`
    FROM `product`
    WHERE `id` = ?

我知道我可以列出所有字段以便这样做,但这意味着我必须在每次添加新字段等时更新此语句。

有没有办法用上面的简短版本做到这一点?

【问题讨论】:

    标签: mysql insert insert-into


    【解决方案1】:

    没有。您的两个选择是:

    1. SELECT 语句中单独列出字段
    2. INSERT 之后执行UPDATE 将列重新设置为NULL

    第一个是正确的解决方案,IMO。它使未来的维护变得更容易(而不是看起来更困难),并且让您(或新程序员)在 6 个月后访问代码时更加清晰。

    【讨论】:

    • 谢谢肯 - 我就是这么想的。
    猜你喜欢
    • 1970-01-01
    • 2018-12-27
    • 2012-01-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-02-09
    • 2015-08-15
    • 2014-03-22
    相关资源
    最近更新 更多