[解決済み】MySQL ON DUPLICATE KEY UPDATEで1クエリで複数行挿入する場合
2022-04-06 02:18:47
質問
1つのクエリで複数行を挿入したいので、次のようなSQLクエリを使用しました。
$sql = "INSERT INTO beautiful (name, age)
VALUES
('Helen', 24),
('Katrina', 21),
('Samia', 22),
('Hui Ling', 25),
('Yumie', 29)";
mysql_query( $sql, $conn );
問題は、このクエリを実行したときに、そのクエリに含まれる
UNIQUE
キー(これは
PRIMARY KEY
) の場合、例えば
'name'
をチェックし、もしそのような
'name'
が既に存在する場合は、対応する行全体を更新するか、挿入する必要があります。
例えば、以下の例では
'Katrina'
がすでにデータベースに存在する場合は、フィールドの数に関係なく行全体を更新する必要があります。また、もし
'Samia'
が存在しない場合は、行を挿入しなければならない。
を使おうと思いました。
INSERT INTO beautiful (name, age)
VALUES
('Helen', 24),
('Katrina', 21),
('Samia', 22),
('Hui Ling', 25),
('Yumie', 29) ON DUPLICATE KEY UPDATE
ここで罠が。どうすればいいのか、行き詰って混乱してしまいました。一度に挿入/更新する行が複数あるのですが。方向性を教えてください。ありがとうございます。
解決方法は?
MySQL 8.0.19 以降では、その行にエイリアスを使用することができます ( 参照 ).
INSERT INTO beautiful (name, age)
VALUES
('Helen', 24),
('Katrina', 21),
('Samia', 22),
('Hui Ling', 25),
('Yumie', 29)
AS new
ON DUPLICATE KEY UPDATE
age = new.age
...
以前のバージョンでは、キーワード
VALUES
(参照
参照
MySQL 8.0.20 で非推奨)。
INSERT INTO beautiful (name, age)
VALUES
('Helen', 24),
('Katrina', 21),
('Samia', 22),
('Hui Ling', 25),
('Yumie', 29)
ON DUPLICATE KEY UPDATE
age = VALUES(age),
...
関連
-
[解決済み] ERROR: 参照されたテーブル "bar" の与えられたキーに一致するユニークな制約がありません。
-
[解決済み] MySQLのON句の不明なカラム
-
[解決済み] SQL Server で複数行のテキストを 1 つのテキスト文字列に連結する方法
-
[解決済み] MySQLの複数行を1つのフィールドに連結することはできますか?
-
[解決済み] MySQLテーブルへの挿入または存在する場合の更新
-
[解決済み] "INSERT IGNORE" vs "INSERT ... ON DUPLICATE KEY UPDATE"
-
[解決済み] MySQL - SELECTクエリに基づくUPDATEクエリ
-
[解決済み] SQLite - UPSERT *not* INSERT or REPLACE
-
[解決済み] MySQLで重複した行を削除する
-
[解決済み] insert into ... select from ... on duplicate key update (重複キーで更新)
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】「パラメータ@objnameがあいまいか、主張する@objtype(COLUMN)が間違っています」を解決するにはどうすればよいですか?[重複している]。
-
[解決済み] テーブルのFROM句の項目がない [終了しました] 。
-
[解決済み] ''付近の構文が正しくない
-
[解決済み] ORA-01790: 式は、対応する式と同じデータ型でなければならないエラーが発生するケース
-
[解決済み] ORA-12801: 並列クエリサーバー P004 および ORA-01555 でシグナルされたエラー: スナップショットが古すぎる。
-
[解決済み] mongoの外部キー?
-
[解決済み] DELETE文の競合REFERENCE制約
-
[解決済み] SQLです。最初の出現箇所のみを返す
-
[解決済み] CLOBとNCLOBの違いは何ですか?
-
[解決済み] マルチパート識別子をバインドできなかった