MySQL で「存在しない場合は挿入」操作を実装するにはどうすればよいですか?
P粉005105443
P粉005105443 2023-08-29 10:59:40
0
2
443

Google 検索で初めてこの記事を見つけました。標準 SQL で INSERT if NOT EXISTS クエリを作成する方法 では、相互に排他的なテーブルについて説明しています。

約 1,400 万件のレコードを含むテーブルがあります。同じ形式でさらにデータを追加したい場合、クエリのペア (つまり、結果セットを使用して、1 つのクエリをチェックし、1 つのクエリを挿入する) を使用せずに、挿入したいレコードが存在しないことを確認する方法はありますか?は空です)?

フィールドのunique制約は、insertがすでに存在する場合に失敗することを保証しますか?

は単なる 制約のようで、PHP 経由で挿入を発行すると、スクリプトがガタガタします。

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
      最新のダウンロード
      詳細>
      ウェブエフェクト
      公式サイト
      サイト素材
      フロントエンドテンプレート
      私たちについて 免責事項 Sitemap
      PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!