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

MySQLに複数のデータを挿入し、存在する場合は更新します

    必要なのは、新しい行を作成するのではなく、更新する行の重複に違反する1つのインデックスの衝突だけです。インデックスの衝突は主キーである可能性があり、単一の列または複数の列にまたがる複合インデックスである別のインデックスに1つあります。

    当然のことながら、以下はかなり不十分ですが、私が今できる限り想像力に富んでいます。

    create table user
    (
        id int auto_increment primary key,
        userName varchar(20) not null,
        friendCount int not null,
        unique key(userName)
    );
    
    insert user(userName,friendCount) values('Jason7',0) on duplicate key update friendCount=friendCount+1;
    select * from user;
    +----+----------+-------------+
    | id | userName | friendCount |
    +----+----------+-------------+
    |  1 | Jason7   |           0 |
    +----+----------+-------------+
    
    insert user(userName,friendCount) values('Fred',0) on duplicate key update friendCount=friendCount+1;
    select * from user;
    +----+----------+-------------+
    | id | userName | friendCount |
    +----+----------+-------------+
    |  1 | Jason7   |           0 |
    |  2 | Fred     |           0 |
    +----+----------+-------------+
    
    insert user(userName,friendCount) values('Fred',0) on duplicate key update friendCount=friendCount+1;
    +----+----------+-------------+
    | id | userName | friendCount |
    +----+----------+-------------+
    |  1 | Jason7   |           0 |
    |  2 | Fred     |           1 |
    +----+----------+-------------+
    



    1. PHP、jQueryを使用してモーダル形式でフィールドにデータを入力する

    2. 英語以外の文字を使用したSEO対応URLの処理

    3. 1つのステートメントで複数の列を変更する

    4. MySQLのテーブルをクリーンアップするには、削除、切り捨て、またはドロップします