INSERT INTO SELECT - 用NULL替换一个字段

时间:2012-11-27 17:28:17

标签: mysql insert insert-into

我正在尝试执行INSERT INTO SELECT语句,但是当我这样做时,我希望SELECT语句中的一个字段返回NULL而不是最初的字段。

到目前为止,我有:

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

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

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

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

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

1 个答案:

答案 0 :(得分:2)

没有。你的两个选择是:

  1. SELECT声明
  2. 中单独列出字段
  3. UPDATE后执行INSERT,将列重新设置为NULL
  4. 第一个是正确的解决方案,IMO。它使未来的维护变得更容易(而不是看起来更困难),并且当您(或新程序员)在6个月后访问代码时更加清晰。