0

私はこのテーブルを持っています:

ID  adv_nr  day item1 item2 item3
1   2       2   10    23    34
2   2       3   11    23    34
3   2       4   10    24    34
4   2       5   10    35    34
5   3       10  56    34    12

キーはID(Primairy)とadv_nrにday(UNIQUE)と組み合わせて設定されます。

item1またはitem2に変更があった場合、ON DUPLICATE KEY Updateを実行しますが、4日目の削除の場合の処理​​方法を教えてください。行を削除するか、NULLに設定します。adv_nr = 2であり、クエリの値に存在しない値を削除する(またはNULLに更新する)方法はクエリにありますか?したがって、クエリは次のようになります。

INSERT INTO table  (`adv_nr`,`day`,`item1`,`item2`,`item3`)
    VALUES (2,2,10,24,34), (2,3,11,28,34), (2,4,10,35,34) ON DUPLICATE KEY UPDATE 
    Item1 = VALUES(item1),
    Item2 = VALUES(item2),
    Item3 = VALUES(item3);

ID 4の行を削除(または更新してNULL)する方法は?

4

2 に答える 2

0

あなたの例はあなたが求めているものと一致していないようです。「day=4の値が送信されない場合は、アイテムの値を無効にしてください」と質問していると思います。クエリの例には、4日目の値が含まれています。

したがって、VALUESエントリを持たない行を無効にするように要求していると仮定すると、単一のクエリでそれを行うための適切な方法はありません。TRIGGERを使用して、INSERT後にロジックを実行できる可能性があります。

于 2012-11-22T11:14:47.863 に答える
0

なぜ、すべてを 1 つのステートメントに詰め込みたいのですか。ただdelete * from yourTable where adv_nr = 2; insert into ...

まず第一に、あなたが求めていることは不可能だと思います。第 2 に、すべてを 1 つのステップで実行しないと、エラーが発生しにくくなります。メンテナンスのしやすさなど...

必要以上に複雑にしないでください。

于 2012-11-22T11:09:39.983 に答える