INSERT…ONDUPLICATE KEYUPDATEを複数のキーで使用する

ファブリツィオ・バルトロムッチ

3つのキー(userId、udid、token)のいずれかで行を識別したいDBがあります。3つすべてが一意のキーであり、最初のキーもプライマリで自動増分です。基本的に、キーの1つが同じである場合、すべての値を更新したいと思います。残念ながら、私が使用する場合:

INSERT INTO users (udid, nickname, playerID, `language`, app, token,
 `In Arrivo HD`) VALUES ('AB71C145-2FFE-4BA8-B0E7-9F121948C962', 'Fabry65', 'G:274138044', 'it_IT', 'In Arrivo HD', 
'605a383a7e3469a3da0b471cd5b73af7384ca5e389eeb7cd72e550e96f37f450', NOW()+ INTERVAL 1 YEAR) 
ON DUPLICATE KEY UPDATE udid='AB71C145-2FFE-4BA8-B0E7-9F121948C962', 
token='605a383a7e3469a3da0b471cd5b73af7384ca5e389eeb7cd72e550e96f37f450',  lastAccess=NOW(), active=1, nickname='Fabry65',  
playerID='G:274138044',`language`='it_IT', app='In Arrivo HD'

そして、繰り返される鍵はたまたまトークンです、私はエラーがあります:

キー「トークン」のエントリ「605a383a7e3469a3da0b471cd5b73af7384ca5e389eeb7cd72e550e96f37f450」が重複しています

もちろん、他の2つのキーを繰り返す場合も、同じことが起こります。DUPLICATE KEYUPDATEのチェーンが機能していないようです。どうすればいいですか?

簡単に言うと、私の問題は、3つのキーのいずれかが同じである場合は行を更新し、すべてが異なる場合は新しい行を挿入することです。

ファブリツィオ・バルトロムッチ

わかりました、私は解決策を見つけたと思います:

$query = "UPDATE users SET token='token', udid='$udid', lastAccess=NOW(), active=1, nickname='".$nickname."', playerID='".$playerID."',`language`='".$language."', app='".$app."' WHERE userId=$userId";
    $resultUpdate=$mysqli->query($query);
    if (!$resultUpdate){
        $query = "UPDATE users SET udid='$udid', lastAccess=NOW(), active=1, nickname='".$nickname."', playerID='".$playerID."',`language`='".$language."', app='".$app."' WHERE userId=$userId"
    }

トークンも更新しようとして最初のクエリを実行します。失敗した場合は、トークンが同じであることを意味するため、トークンについて言及せずに更新します。

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

PythonからONDUPLICATE KEYUPDATEを使用する

分類Dev

PythonからONDUPLICATE KEYUPDATEを使用する

分類Dev

mysqlは、INSERT ONDUPLICATEのすべての位置パラメーターを置き換えるわけではありません

分類Dev

INSERT INTO ... SELECT ... ON DUPLICATE KEYUPDATEでSQLを使用する場合のエラー1064

分類Dev

REPLACEINTOまたはONDUPLICATE KEYUPDATEを使用していません

分類Dev

INSERT ON DUPLICATE KEYUPDATEで「join」を使用することは可能ですか?

分類Dev

INSERT INTO ..複数のキーを使用した重複キーの更新

分類Dev

キーではない場合のMySQLステートメントONDUPLICATE KEY

分類Dev

INSERT ... SELECT ... ON DUPLICATE KEYUPDATEの「Records」および「Duplicates」カウントを取得する

分類Dev

更新のために重複キーでlast_insert_id関数を使用しているため、まだ行を追加しています

分類Dev

Slick(Scala)でsqluを使用して、複数のInsertステートメントをバッチで実行する

分類Dev

INSERT ON DUPLICATE KEYUPDATEステートメントを使用した複雑なmysqlクエリエラー

分類Dev

PostgreSQL9.5でINSERTINTOSELECTおよびONDUPLICATE UPDATEを実行するにはどうすればよいですか?

分類Dev

SQL ON DUPLICATE KEYUPDATEの使用中に複数のレコードを挿入します

分類Dev

1つのINSERTステートメントで複数のレコードを複製する

分類Dev

INSERT INTO ... ON DUPLICATE KEYUPDATEの前に値が存在するかどうかを確認してください

分類Dev

phpMyAdminでMySQLを使用して複数のテーブルを操作する条件付きプロシージャ(if-then-insert-else-update)を構築する方法

分類Dev

jOOQ-VALUES()関数を使用した重複キー更新時のMySQL複数行INSERT ...

分類Dev

knexを使用して「Insert ... ON DUPLICATEKEYUPDATE」を使用して複数の行を追加する方法

分類Dev

JDBIを使用して単一のINSERTで複数の行を挿入する方法は?

分類Dev

異なるテーブルへのINSERTでUPDATEするPostgreSQLの同じトリガー関数(同じスキーマを使用)

分類Dev

INSERT ... ON DUPLICATE KEY UPDATEがMySQLのキー「PRIMARY」に重複エントリ「x」を与えるのはなぜですか?

分類Dev

INSERT ... RETURNINGの戻り値を次の複数の挿入で使用します

分類Dev

複数の重複条件で「重複キー上」を使用する

分類Dev

1つのクエリで複数のInsertステートメントを実行する方法は?

分類Dev

mysql INSERT ... ON DUPLICATE KEYUPDATEがマスター/マスター構成でRBRレプリケーションを中断できる理由

分類Dev

SQLServerで複数の値を使用する単一のINSERTでトランザクションがどのように機能するか

分類Dev

INSERT INTO ... ON DUPLICATE KEYUPDATEが機能していないようです

分類Dev

MySQL-'INSERT INTO-ON DUPLICATE KEYUPDATE 'はデータ損失を引き起こす可能性があります

Related 関連記事

  1. 1

    PythonからONDUPLICATE KEYUPDATEを使用する

  2. 2

    PythonからONDUPLICATE KEYUPDATEを使用する

  3. 3

    mysqlは、INSERT ONDUPLICATEのすべての位置パラメーターを置き換えるわけではありません

  4. 4

    INSERT INTO ... SELECT ... ON DUPLICATE KEYUPDATEでSQLを使用する場合のエラー1064

  5. 5

    REPLACEINTOまたはONDUPLICATE KEYUPDATEを使用していません

  6. 6

    INSERT ON DUPLICATE KEYUPDATEで「join」を使用することは可能ですか?

  7. 7

    INSERT INTO ..複数のキーを使用した重複キーの更新

  8. 8

    キーではない場合のMySQLステートメントONDUPLICATE KEY

  9. 9

    INSERT ... SELECT ... ON DUPLICATE KEYUPDATEの「Records」および「Duplicates」カウントを取得する

  10. 10

    更新のために重複キーでlast_insert_id関数を使用しているため、まだ行を追加しています

  11. 11

    Slick(Scala)でsqluを使用して、複数のInsertステートメントをバッチで実行する

  12. 12

    INSERT ON DUPLICATE KEYUPDATEステートメントを使用した複雑なmysqlクエリエラー

  13. 13

    PostgreSQL9.5でINSERTINTOSELECTおよびONDUPLICATE UPDATEを実行するにはどうすればよいですか?

  14. 14

    SQL ON DUPLICATE KEYUPDATEの使用中に複数のレコードを挿入します

  15. 15

    1つのINSERTステートメントで複数のレコードを複製する

  16. 16

    INSERT INTO ... ON DUPLICATE KEYUPDATEの前に値が存在するかどうかを確認してください

  17. 17

    phpMyAdminでMySQLを使用して複数のテーブルを操作する条件付きプロシージャ(if-then-insert-else-update)を構築する方法

  18. 18

    jOOQ-VALUES()関数を使用した重複キー更新時のMySQL複数行INSERT ...

  19. 19

    knexを使用して「Insert ... ON DUPLICATEKEYUPDATE」を使用して複数の行を追加する方法

  20. 20

    JDBIを使用して単一のINSERTで複数の行を挿入する方法は?

  21. 21

    異なるテーブルへのINSERTでUPDATEするPostgreSQLの同じトリガー関数(同じスキーマを使用)

  22. 22

    INSERT ... ON DUPLICATE KEY UPDATEがMySQLのキー「PRIMARY」に重複エントリ「x」を与えるのはなぜですか?

  23. 23

    INSERT ... RETURNINGの戻り値を次の複数の挿入で使用します

  24. 24

    複数の重複条件で「重複キー上」を使用する

  25. 25

    1つのクエリで複数のInsertステートメントを実行する方法は?

  26. 26

    mysql INSERT ... ON DUPLICATE KEYUPDATEがマスター/マスター構成でRBRレプリケーションを中断できる理由

  27. 27

    SQLServerで複数の値を使用する単一のINSERTでトランザクションがどのように機能するか

  28. 28

    INSERT INTO ... ON DUPLICATE KEYUPDATEが機能していないようです

  29. 29

    MySQL-'INSERT INTO-ON DUPLICATE KEYUPDATE 'はデータ損失を引き起こす可能性があります

ホットタグ

アーカイブ