[解決済み] MySQL ON DUPLICATE KEY - last insert id?
2022-05-04 21:02:47
質問
次のようなクエリがあります。
INSERT INTO table (a) VALUES (0)
ON DUPLICATE KEY UPDATE a=1
挿入または更新のどちらかのIDが欲しいのですが。私はinsert_id()が「挿入された」IDのみを返し、更新されたIDを返さないと信じているので、通常、これを得るために2番目のクエリを実行します。
2つのクエリを実行せずに、INSERT/UPDATEと行のIDを取得する方法はありますか?
どのように解決するのですか?
こちらのページをご覧ください。
https://web.archive.org/web/20150329004325/https://dev.mysql.com/doc/refman/5.0/en/insert-on-duplicate.html
ページ下部には、MySQL関数に式を渡すことで、LAST_INSERT_IDを更新のために意味のあるものにする方法が説明されています。
MySQLドキュメントの例より。
テーブルに AUTO_INCREMENT 列があり、INSERT ... UPDATE で行を挿入した場合、 LAST_INSERT_ID() 関数は AUTO_INCREMENT 値を返します。ステートメントが行を更新する場合、LAST_INSERT_ID() は意味を持ちません。しかし、LAST_INSERT_ID(expr)を使用して、これを回避することができます。idがAUTO_INCREMENT列であると仮定します。LAST_INSERT_ID()を更新のために意味のあるものにするには、以下のように行を挿入します。
INSERT INTO table (a,b,c) VALUES (1,2,3)
ON DUPLICATE KEY UPDATE id=LAST_INSERT_ID(id), c=3;
関連
-
[解決済み] MySQLでdatetimeとtimestampのどちらのデータ型を使用すべきですか?
-
[解決済み] MySQLでコマンドラインを使用してSQLファイルをインポートするにはどうすればよいですか?
-
[解決済み] 各グループの最後のレコードを取得する - MySQL
-
[解決済み] MySQLテーブルへの挿入または存在する場合の更新
-
[解決済み] "INSERT IGNORE" vs "INSERT ... ON DUPLICATE KEY UPDATE"
-
[解決済み] MySQLで重複する値を検索する
-
[解決済み] MySQL - SELECTクエリに基づくUPDATEクエリ
-
[解決済み] MySQLの挿入クエリから新しいレコードの主キーIDを取得する?
-
[解決済み】MySQL ON DUPLICATE KEY UPDATEで1クエリで複数行挿入する場合
-
[解決済み】INSERT ... ON DUPLICATE KEY (何もしない)
最新
-
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 実装 サイバーパンク風ボタン
おすすめ
-
MySQLデータベースでvarchar型の数値の大きさを比較する方法
-
MySQLとOracleの一括挿入SQLの汎用的な記述例
-
MySQLインデックスベースストレステストの実装
-
MySQLで正規表現を使う 詳細
-
[解決済み] [GROUP BY句に含まれるか、集約関数で使用される必要があります。
-
mysql がエラーを報告します。不明な文字セットです。'utf8mb4'
-
Unknown character set.を解決する。MySQLデータベースインポート時の'utf8mb4'エラーの解消
-
PostMan レポート エラー: 接続 ECONNREFUSED 127.0.0.1:port number
-
[解決済み] MySQLデータベースの名前を素早く変更する(スキーマ名を変更する)方法は?
-
[解決済み] MySQLテーブルへの挿入または存在する場合の更新