[解決済み] MySQLの条件付き挿入
2022-10-29 21:49:50
質問
条件付きINSERTを作成するのに苦労しています。
私はインスタンスIDがユニークである列(インスタンス、ユーザー、アイテム)を持つx_tableを持っています。私は、ユーザーがすでに与えられたアイテムを持っていない場合にのみ、新しい行を挿入したいのです。
例えば、instance=919191 user=123 item=456を挿入しようとしている場合。
Insert into x_table (instance, user, item) values (919191, 123, 456)
ONLY IF there are no rows where user=123 and item=456
何かお手伝いや正しい方向へのご指導があれば、とてもありがたいです。
どのように解決するのですか?
DBMSが、挿入を実行する際にどのテーブルから選択するかについて制限を課していない場合、試してみてください。
INSERT INTO x_table(instance, user, item)
SELECT 919191, 123, 456
FROM dual
WHERE NOT EXISTS (SELECT * FROM x_table
WHERE user = 123
AND item = 456)
この中で
dual
は一行だけのテーブルです (元々は Oracle で見つかり、現在は mysql でも見つかっています)。 ロジックは、SELECT ステートメントが、必要な値を持つ 1 行のデータを生成し、その値がまだ見つかっていない場合にのみ、そのデータを生成することです。
あるいは、MERGE ステートメントを見てください。
関連
-
MySQLのLike演算子に関する詳細
-
[解決済み] MySQLでdatetimeとtimestampのどちらのデータ型を使用すべきですか?
-
[解決済み] MySQLでコマンドラインを使用してSQLファイルをインポートするにはどうすればよいですか?
-
[解決済み] MySQLのAUTO_INCREMENTをリセットする方法
-
[解決済み] MySQLの複数行を1つのフィールドに連結することはできますか?
-
[解決済み] MySQLテーブルへの挿入または存在する場合の更新
-
[解決済み] MySQLで'insert if not exists'を行うにはどうしたらいいですか?
-
[解決済み] "INSERT IGNORE" vs "INSERT ... ON DUPLICATE KEY UPDATE"
-
[解決済み】MySQL ON DUPLICATE KEY UPDATEで1クエリで複数行挿入する場合
-
[解決済み] 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 実装 サイバーパンク風ボタン
おすすめ
-
ジョイントインデックスのためのmysqlの条件とインデックスが失敗するための条件
-
SQL基本クエリステートメント
-
MySQLのNULLについて解説した記事
-
Mysqlのソート機能の詳細
-
sql エラーを解決する オペランドには1つの列が含まれている必要があります。
-
msql クエリでのエラー 'where 節' の不明な列 'yellow fruit'
-
[解決済み] 1つのSQLクエリで複数のカウントを取得する方法は?
-
[解決済み] mysqladminのフラッシュホストでブロックを解除する方法
-
[解決済み] SQLでカラムに最大値を持つ行のみを選択する [重複]。
-
[解決済み] MySQLデータベースのテーブルのサイズを取得する方法は?