MySQL挿入ステートメント - 重複キー更新時

既存の(Despgoods)テーブルから新しいテーブルにデータを挿入するMySQL挿入ステートメントがあります(DespGoods_All詳細)。両方のテーブルのプライマリキーは、「大文字小文字が区別されない」および「decpgoods_alldetails」のautoincrement列です。

各ケース番号には、時々変化するロード番号があります。重複したキーが検出されたときに、挿入されるレコードを失敗/無視/スキップするのではなく、単にそのレコードのロード番号を更新するようにステートメントを調整するにはどうすればよいですか。一部のレコードは複製されず、一部のレコードは複製されません。複製されていないレコードは挿入する必要がありますが、複製されたレコードは更新する必要があります。

置換するか、または重複するキー更新を使用しますか?既存のクエリでこの構文を使用するにはどうすればよいですか?

助けを前にありがとう。

insert ignore into despgoods_alldetails 
(`loc or exp` ,`LOC TRNSPRT DEST` ,`load number` ,`case no` ,`lot id` ,`metal mass` ,`gross mass` ,`CASE CREATION DATETIME` ,`CASE PROGERESS STATUS` ,`PROGRESS STAT DATETIME` ,`case width` ,`case height` ,`case length` ,`storage` ,`del prty` ,`CRTD DEPT` ,`CASE STATUS` ,`lab released` ,`PROD STREAM` ,`PROD SUB STREAM` ,`CSC Name` ,`Customer` ,`DAYS STANDING` ,`EXP SHIPREL` ,`LOC WHS EREL` ,`LOC CUST REL` ,`REC CHANGED AT` ,`transporttypename` ,`transporttypeid` ,`customerID`,`LOCStatus`)
SELECT `despgoods`.`loc or exp` ,`despgoods`.`LOC TRNSPRT DEST` ,`despgoods`.`load number` ,`despgoods`.`case no` ,`despgoods`.`lot id` ,`despgoods`.`metal mass` ,`despgoods`.`gross mass` ,`despgoods`.`CASE CREATION DATETIME` ,`despgoods`.`CASE PROGERESS STATUS` ,`despgoods`.`PROGRESS STAT DATETIME` ,`despgoods`.`case width` ,`despgoods`.`case height` ,`despgoods`.`case length` ,`despgoods`.`storage` ,`despgoods`.`del prty` ,`despgoods`.`CRTD DEPT` ,`despgoods`.`CASE STATUS` ,`despgoods`.`lab released` ,`despgoods`.`PROD STREAM` ,`despgoods`.`PROD SUB STREAM` ,`despgoods`.`CSC Name` ,`despgoods`.`Customer` ,`despgoods`.`DAYS STANDING` ,`despgoods`.`EXP SHIPREL` ,`despgoods`.`LOC WHS EREL` ,`despgoods`.`LOC CUST REL` ,`despgoods`.`REC CHANGED AT` ,`customers`.`transporttypename` ,`customers`.`transporttypeid` ,`customers`.`customerID` ,'loadplanned'
FROM despgoods
INNER JOIN customers
ON 
despgoods.customer = customers.customername
 ";
0

1 答え

ON UPDATE KEY UPDATE を使用することができます:

...
FROM despgoods
INNER JOIN customers
ON 
despgoods.customer = customers.customername
ON DUPLICATE KEY UPDATE `load number` = VALUES(`load number`);

REPLACE INTO を使用することもできます。唯一のことは、行全体を削除してから挿入することです。

2
追加された
ありがとう、私は挿入を無視して使用するか、挿入するだけですか?重複したキーの更新についてはテストします。再度、感謝します。
追加された 著者 Smudger,
ありがとう@ 1月、重複したキーの更新のために、私は自分の埋め込みselect文から列名を指定できますか?重複キー更新 load number 総質量 = VALUES(ロード番号 >総質量);ありがとう、ライアン
追加された 著者 Smudger,
重複キー更新 load number = VALUES(読み込み回数)、総質量 = VALUES(総質量
追加された 著者 Jan S,