問題タブ [on-duplicate-key]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
9 に答える
27603 参照

mysql - 教義: 重複キーの更新について

INSERTオプションを使用してドクトリンクエリを作成するにはどうすればよいON DUPLICATE KEY UPDATEですか?

0 投票する
1 に答える
529 参照

php - ONDUPLICATEKEYを使用してINSERTINTO

クエリには少しジレンマがあります。コードを最適化するために、PHPでロジックをできるだけ少なくし、MySQLにほとんどの処理を任せたいと思います。

これが私が持っているものです。たとえば、10個のキーを持つ配列があります。各キーは、新しい配列にいくつかの値を差し控えます。各値は、データベーステーブルの行を表します。

私のデータベーステーブルに6つの列があるとしましょう。最初のものは自動インクリメントのプライマリです。列2、3、および4は一意である必要があります。列5はTEXT表現であり、一意であってはなりません。列6はINT(1)であり、0または1のいずれかです。

これで、テーブルにデータを挿入するときに、これを使用しますINSERT INTO mytable (col2, col3, col4, col5, col6) VALUES ('$col2','$col3','$col4','$col5',1) ON DUPLICATE KEY UPDATE col5 = '$col5', col6 = 0; 。これは完璧に機能しますが、必要なことを実行できません。

同じ配列をもう一度送信しますが、key3、col5行の場合、データを別の行に変更します。そのキーのcol6のみを0に更新します。残りは1のままである必要があります。これで、まったく同じデータで更新されたとしても、すべての行が更新されます。

したがって、必要なのは、col5が現在保存されている値と異なる場合にのみcol6を更新することです。どうやってやるの?

0 投票する
2 に答える
105871 参照

php - 存在する場合はPHP MYSQL UPDATEまたは存在しない場合はINSERT?

これが少しでも正しいかどうかはわかりません。フィールドが現在存在する場合はデータベースを更新するか、存在しない場合は挿入するクラスがあります。複雑なのは、3 つのテーブル (set_colors、school_art、baseimage) を結合していることです。

どんな助けでも本当に素晴らしいでしょう。

これが私が持っているものです:

0 投票する
1 に答える
1627 参照

php - mysqli::insert_id が重複キーで間違った ID を返す

INSERT INTO ON DUPLICATE KEY UPDATE のために PHP で mysqli::insert_id を使用すると、行が更新されると、更新された行ではなく、次の自動インクリメントを取得し続けます。同じデータベースの別のテーブルでは、ON DUPLICATE KEY UPDATE を使用すると、この動作は発生しません。代わりに、更新された行の ID を取得します。しかし、何らかの理由で、作成した新しいテーブルで、存在しない次の ID を取得し続けています。どちらのテーブルも MyISAM で、自動インクリメント フィールドがあります。なぜ彼らが異なる振る舞いをするのか理解できません。

例:

何か案は?

0 投票する
1 に答える
217 参照

mysql - キーの全範囲をシフトする

キー列が timestamp : Timeである時系列データに取り組んでいます。各行には多くの「値」列もあります。

データの範囲全体を数時間シフトしようとしています (夏時間の問題のため)。そのために、いくつかの行のキーを更新しますが、重複キーが発生する可能性があります。日付範囲の端にある重複キーを無視したいと思います。シフトされた範囲が古い範囲を上書きするようにします。

私は次のようなことをする予定です:

describe <table>時間キーの出力は次のとおりです。

私の質問は次のとおりです。すべてのキーを一度にシフトしますか、それとも各行を1つずつシフトしようとし、シフトされた範囲自体に大量の重複キーが発生しますか?

これを念頭に置いて行うより良い方法はありますか?前もって感謝します

0 投票する
1 に答える
356 参照

mysql - レースコンディションの概念

競合状態が何であるかは知っていますが、まだ完全には理解していません:

まず、myisamはトランザクションをサポートしていませんが、innodbはサポートしています。

多くのユーザーを念頭に置いてソーシャル サイトを構築していますが、ユーザーは ON DUPLICATE KEY UPDATE でプロファイルを更新するため、競合状態について考える必要があるのではないかと考えていますが、競合状態が発生するかどうか、またどのようにこの問題から保護するためのコードを記述しますか?

COMMIT、ROLLBACKなどの使用など、複数のユーザーがいるサイトでの競合状態の概念を誰かが説明してもらえますか.

これらのものはどこで使用しますか?

0 投票する
2 に答える
379 参照

php - はい、別の ON DUPLICATE KEY UPDATE クエリ

ここにあるすべての質問を読みましたが、まだわかりません

かなりのサイズの同一のテーブルが 2 つあります。既存のデータを破壊せずに のpackages_sortedデータでテーブルを更新したいpackages_sorted_temppackages_sorted

テーブルpackages_sorted_tempには 2 列のみのデータが含まれてdb_idおり、quality_rank

テーブルpackages_sortedには 35 列すべてのデータが含まれていますが、quality_rank0 です

各テーブルの主キーはdb_id、これでトリガーしたいものですON DUPLICATE KEY UPDATE

本質的に、これらの 2 つのテーブルを変更してマージするにはどうすればよいですかpackages_sortedquality_rank0 から同じ主キーの下にquality_rank格納されているpackages_sorted_temp

これが機能していないものです

0 投票する
1 に答える
1141 参照

mysql - 「重複キー」で値を追加します

$wordsという次の配列があります

次のように挿入したい:

テーブル 'Examples' には、自動増加の ID というキーがあります。フィールドワードは「ユニーク」です

私が欲しいのは、フィールド「認証」で、「単語」が同じになるたびに値が追加されることです

したがって、結果は次のようになります。

だから私は「重複キーに」フレーズを追加しようとしました

しかし、 Attestation = の後に何を追加する必要があるのか​​ わかりません。たとえば、次のように、さまざまな証明が次々に追加されるようにします:DI.5,9DI.2,8 または「重複キー」ですこれを行う正しい方法ではありませんか?

0 投票する
1 に答える
1442 参照

mysql - Mysqlの複数の一意のキー

複数の一意のキーがある場合、またはオプションを持つことは可能ですか?

たとえば、私はこのキーまたはこのキーをチェックする必要があり、重複エラーが発生した場合は、そのキーを更新しますか?

UPNと(username、school)の2つの一意のキーがあります

MYSQLでonduplicateupdateステートメントを使用します。UPNが渡された場合、重複している場合はupnキーを更新するか、新しい行を挿入します。UPNと(username、school)を確認して、次のことを行います。

if upn match update on that if upn dosnt match but(username、school)do update on(username、school)match If upn match and(username、school)dosnt update on UPN match

だから私はそれを使用するか、の代わりに必要です、これは可能ですか?

0 投票する
1 に答える
1674 参照

mysql - ON DUPLICATE KEY が正しく機能しない

次のクエリを実行していますが、エラーが発生します。その部分から来ていると思いますON DUPLICATE KEYが、そこで使用する正しい構文が何であるかは100%わかりません。

編集

以下を使用すると、このエラーが発生します。

SQL 構文にエラーがあります。10 行目の ')' 付近で使用する正しい構文については、MySQL サーバーのバージョンに対応するマニュアルを確認してください。