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

MySQLdb python挿入行または列の増分カウント(存在する場合)

    @johnthexiiが提供したリンクを使用したアプローチは次のとおりです(デモ )(MySQLのみを使用しているため、Python固有ではありません)

    CREATE TABLE UserNames (`username` varchar(35) unique, `duplicates` int);
    
    INSERT INTO UserNames (`username`, `duplicates`)
     VALUES ('stackoverflow.com', 0);
    
    INSERT INTO UserNames (`username`, `duplicates`)
     VALUES ('dba.stackexchange.com/', 0)
     ON DUPLICATE KEY UPDATE `duplicates` = `duplicates`+1;
    
    INSERT INTO UserNames (`username`, `duplicates`)
     VALUES ('stackoverflow.com', 0)
     ON DUPLICATE KEY UPDATE `duplicates` = `duplicates`+1;
    

    何が起こっているかの内訳は次のとおりです。username フィールドは一意としてマークされているため、既存のユーザー名でレコードを挿入しようとすると、データベースレベルで失敗します。次に、INSERT ステートメントには余分なものがあります

    ON DUPLICATE KEY UPDATE `duplicates` = `duplicates`+1
    

    これは、INSERTに失敗する代わりに、duplicatesを取得することをMySQLに通知します。 列を1つ増やします。 3つのINSERTコマンドを実行すると、stackoverflow.comという2つのレコードが表示されます。 duplicatesがあります 値は1、dba.stackexchange.com duplicatesがあります 値0。




    1. SQLの「AND」または「OR」が最初に来ますか?

    2. T-SQL開発者向けのヒントを含むTOP5MySQLDelete構文

    3. 掲示板-データベースの最適化

    4. SQLServerのlikeを使用してバイナリ列をクエリする