検索

ホームページ  >  に質問  >  本文

MySQL で「存在しない場合は挿入」操作を実装するにはどうすればよいですか?

<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粉005105443P粉005105443510日前566

全員に返信(2)返信します

  • P粉338969567

    P粉3389695672023-08-30 10:05:32

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

    イラスト:

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

    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

    P粉5210131232023-08-30 00:40:11

    INSERT IGNORE INTO tableを使用します。

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


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

    返事
    0
  • キャンセル返事