1

INSERT INTO SELECT ステートメントを実行しようとしていますが、実行中に SELECT ステートメント内のフィールドの 1 つが元の値ではなく NULL を返すようにしたいと考えています。

これまでのところ、私は持っています:

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

以下を使用することを考えましたが、既存のフィールドを置き換えるのではなく、追加のフィールドを追加するため機能しません。

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

それを行うためにすべてのフィールドをリストできることはわかっていますが、それは新しいフィールドなどを追加するたびにこのステートメントを更新する必要があることを意味します.

上記の短いバージョンでそれを行う方法はありますか?

4

1 に答える 1

2

いいえ。次の 2 つの選択肢があります。

  1. SELECTステートメントでフィールドを個別にリストする
  2. UPDATE後にINSERTを実行して、列を次のようにリセットします。NULL

1つ目は適切な解決策、IMOです。これにより、将来のメンテナンスが (見た目より難しくなるのではなく) 簡単になり、6 か月後にあなた (または新しいプログラマー) がコードにアクセスしたときに、より明確になります。

于 2012-11-27T17:35:49.457 に答える