2

insertのような更新を実行することは可能ですか?

UPDATE `table` SET `value` ('N','N','N','N','Y','Y','Y','N', 'N') WHERE `my_id` = '1'

問題は、挿入される値の数が今はわからないことです。5または10になる可能性があります。 ここに画像の説明を入力

4

2 に答える 2

6

replace は insert と同じです。重複するキーがあるかどうかをチェックし、重複している場合は行を削除し、新しい行を挿入します。それ以外の場合は挿入します

たとえば、(Name,Type) の一意のインデックスがあり、次のコマンドを入力すると、これを行うことができます。

REPLACE INTO table1 (Name,Type,InitialValue,FinalValue) VALUES ('A',3,50,90 )

Name = 'A' および Type = 3 の行が既に存在し、置き換えられます

CREATE UNIQUE INDEX idx_name_type ON table1(Name,Type)

EDIT:簡単な注意 - REPLACEは常にDELETESしてからINSERTするため、削除時に排他ロックが必要であり、挿入時に排他ロックが必要なため、高負荷で使用することは決して良い考えではありません

一部のデータベース エンジンには

挿入 ... 重複キーの更新時に ...

于 2012-08-20T06:49:33.043 に答える
2

を指定する必要がありますcolumn-name

UPDATE `table` SET `Col1`='y',`Col2`='n' ... WHERE `ID`='1'

または、1 つ以上の列/行を更新したい:

UPDATE `table` Set Col1='Y' WHERE `ID` IN ('1','11','13')
于 2012-08-20T06:34:27.503 に答える