MySQL で「存在しない場合は挿入」操作を実装するにはどうすればよいですか?
P粉005105443
P粉005105443 2023-08-29 10:59:40
0
2
528
<p>Google 検索で初めてこの記事を見つけました。<em>標準 SQL で INSERT if NOT EXISTS クエリを作成する方法</em> では、相互に排他的なテーブルについて説明しています。 </p> <p>約 1,400 万件のレコードを含むテーブルがあります。同じ形式でさらにデータを追加したい場合、クエリのペア (つまり、結果セットを使用して、1 つのクエリをチェックし、1 つのクエリを挿入する) を使用せずに、挿入したいレコードが存在しないことを確認する方法はありますか?は空です)? </p> <p>フィールドの<code>unique</code>制約は、<code>insert</code>がすでに存在する場合に失敗することを保証しますか? </p> <p><em> は単なる </em> 制約のようで、PHP 経由で挿入を発行すると、スクリプトがガタガタします。 </p>
P粉005105443
P粉005105443

全員に返信(2)
P粉338969567

######解決:###### リーリー

イラスト:

最も内側のクエリ リーリー 挿入するデータを含む行がすでに存在するかどうかを検出するために、

WHERE NOT EXISTS

条件として使用されます。このクラスの行を見つけた後にクエリが停止する可能性があるため、

LIMIT 1

(マイクロ最適化、省略可能)。 中間クエリ リーリー は挿入される値を表します。

DUAL

は、すべての Oracle データベースにデフォルトで存在する特別な単一行単一テーブルを指します (

https://en.wikipedia.org/wiki/DUAL_table

を参照)。 MySQL Server バージョン 5.7.26 では、FROM DUAL が省略された場合に有効なクエリが得られますが、古いバージョン (5.5.60 など) では FROM 情報が必要のようです。 WHERE NOT EXISTS を使用すると、最も内側のクエリで一致するデータが見つかった場合、中間クエリは空の結果セットを返します。 外部クエリ リーリー データを挿入します (中間クエリがデータを返す場合)。

いいねを押す +0
P粉521013123

INSERT IGNORE INTO tableを使用します。

INSERT … ON DUPLICATE KEY UPDATE 構文もあり、13.2.6.2 INSERT … ON DUPLICATE KEY UPDATE ステートメント で使用できます。


.org.ua からの投稿 Google の Web キャッシュ によると:

いいねを押す +0
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート