我正在尝试执行INSERT INTO SELECT语句,但是当我这样做时,我希望SELECT语句中的一个字段返回NULL而不是最初的字段。
到目前为止,我有:
INSERT INTO `archive`
SELECT *
FROM `product`
WHERE `id` = ?
我考虑过使用以下内容,因为它添加了一个额外的字段而不是替换现有字段,因此无效:
INSERT INTO `archive`
SELECT *, '' AS `image`
FROM `product`
WHERE `id` = ?
我知道我可以列出所有字段以便执行此操作,但这意味着每次添加新字段等时都必须更新此语句。
有没有办法用上面的短版本做到这一点?
答案 0 :(得分:2)
没有。你的两个选择是:
SELECT
声明UPDATE
后执行INSERT
,将列重新设置为NULL
第一个是正确的解决方案,IMO。它使未来的维护变得更容易(而不是看起来更困难),并且当您(或新程序员)在6个月后访问代码时更加清晰。