sql >> データベース >  >> RDS >> Mysql

MySQL INSERT INTO WHERE NOT EXIST

    INSERT IGNOREのいずれかを使用できます またはREPLACE またはINSERT ... ON DUPLICATE KEY UPDATE ...

    それぞれ、product_id、ip_address

    に一意の制約がある必要があります

    無視を挿入

    INSERT IGNORE INTO products VALUES (null, 111, '8.8.8.8')
    

    エントリがすでに存在する場合、挿入は無視されます。

    交換

    REPLACE INTO products VALUES (null, 111, '8.8.8.8')
    

    削除と新しい挿入を実行します。

    挿入...更新

    INSERT INTO products VALUES (null, 111, '8.8.8.8')
    ON DUPLICATE KEY UPDATE products SET last_modified = NOW()
    

    挿入を試みますが、失敗した場合は既存のレコードを更新します。

    あなたの場合、INSERT IGNOREで問題ないと思います ただし、レコードがすでに存在する場合に他の値を変更する場合は、INSERT ... UPDATE ... うまくいくはずです。

    通常、REPLACEの使用はお勧めしません DELETE FROM table WHERE ...が本当に必要な場合を除きます。 プラスINSERT INTO TABLE ...

    更新

    これには(この例では)組み合わせ製品の一意のインデックスip_addressが必要です。これは

    で実現できます。
    ALTER TABLE products
    ADD UNIQUE INDEX `UIDX_PRODUCT__IP_ADRESS`(product, ipaddress);
    


    1. selectステートメントの列の順序はクエリ速度に影響しますか?

    2. MicrosoftAccessでレポートヘッダーにロゴを追加する方法

    3. 他のプログラムがデータベースに対して読み取り/書き込みを行わずに選択して挿入できるように、MySQLテーブルへの読み取り/書き込みをロックするにはどうすればよいですか?

    4. 条件付き注文