問題タブ [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.
mysql - MySQL:レコードを更新し、重複キーで新しいものを残し、古いものを削除しますか? 中を見る
机がある:
そしてそこにいくつかの値:
user_id = 108325 のすべてのレコードを user_id = 51082 に委任したいのですが、両方のユーザーが同じ thing_id フィールドを持っている場合は、新しい方のみを残して (lock_date1 > lock_date2)、次の結果が得られるようにします。
51082 には、'2012-03-16 00:39:12' の代わりに lock_date = '2013-02-05 19:30:03' という新しいレコードがあることに注意してください。
では、どうすれば行を更新し、重複したキーで新しいものを残すことができますか (特定のフィールドによって)?
ありがとう!
java - LinkedHashMap java を使用した Trigram の作成
LinkedHashMap> を使用してトライグラム モデルを作成しようとしています。ここで、Entry は最後に入力されたバイグラムのエントリです (構造は LinkedHashMap です)。
問題は、複数のキーを格納しないマップであることです (既存のキーの新しいキーと値のペアで既存のキーと値のペアを上書きします)。
マルチマップがこれに役立つかどうかはわかりませんか? もしそうなら、どのように?
mysql - 重複キーの更新によるMariaDB/MYSqlの非記述構文エラー
非常にわかりにくいエラーが発生します。
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'VALUES (order_site_id, order_id, business_email, business_domain, sm_type, activ' at line 1
これが挿入/更新です
java - Hibernate-重複キーのレコードIDを自動入力します
テキストファイル(1つの入札1つのファイル)ソースから入札のリストをロードしていて、それをデータベースに保存したいと思います。私はaddress_point、street、city、countryのテーブルを持っており、address_pointは多くのテーブル(組織、入札など)から参照されています。
スクリプトがデータをロードしているときに、エラーで失敗した1つのトランザクションに同じアドレスを保存してみてください-キーが重複しています。
たとえば、スクリプトは新しい入札を追加し、入札は新しい会社が所有します。新しい入札と新しい会社の住所は同じで、これら2つのオブジェクトは1つのトランザクションに挿入され、両方に同じ住所が含まれています。この都市はすでにデータベースに保存されているため、最初にこの組織の都市を見つけて、見つかったオブジェクトに置き換えるか、プライマリを設定する必要があります。キーを押して同じ入札を行います。
次のスクリプト例では、データベースに保存されていない都市を含む新しい入札と新しい組織を追加します。都市がデータベースにあるかどうかを確認する必要があります。次のステップは、これら2つの都市を比較し、都市が等しい場合はそれらから1つのオブジェクトを作成して、キーの重複を回避する必要があることです。
しかし、入札、組織、ツアーなどの1つのトランザクションでポイントに対処するための3つ以上の参照があります。これらの2つの例は、国、地域などではなく、都市のみを対象としています。したがって、一連の条件を作成するのは面倒です。
この問題を解決するための最も効率的な方法は何ですか?isEquealとhashCodeを定義しましたが、これらのメソッドはセット専用であることを読みました。
mysql - トリガー: 「ON DUPLICATE KEY UPDATE」中に NEW.values と OLD.values を読み取る
MySQL の個々のテーブルのミニ監査システムを作成しようとしています。
INSERT
基本的な//コマンドの操作はうまくいきましたがUPDATE
、DELETE
現在、監査に関心のあるテーブルではINSERT ... ON DUPLICATE KEY UPDATE
.
トリガーON BEFORE INSERT
を使用することで、このイベントが発生していることを知ることができますが、関心のあるデータの半分しか取得できませ NEW.values
んOLD.values
。既存のテーブルを使用してクエリを実行できると思いますが、NEW.ID
パフォーマンスと信頼性についてはわかりません。
OLD.values
データを折りたたむための良いアイデアなどをどこかで読んだので、変更イベントごとに古い値と新しい値の両方を保存しているため、必要です...
UPDATE
MySQL 5.0 (または新しい GA リリース) で、トリガーにいるかのようにこれらの値を確実に取得する方法はありますか?
編集:別のしわ:
NEW.values
更新後のデータと一致していないようです。それらは、実際にレコードに入るデータでは INSERT
なく、ステートメントと一致します。ON DUPLICATE KEY UPDATE
mysql - ON DUPLICATE KEY UPDATE を使用した MySQL LOAD DATA INFILE
膨大な量のデータを MySQL にロードするには、LOAD DATA INFILEが断然最速のオプションです。残念ながら、これは INSERT IGNORE または REPLACE が機能する方法で使用できますが、ON DUPLICATE KEY UPDATE は現在サポートされていません。
ただし、ON DUPLICATE KEY UPDATE
に比べて利点がありREPLACE
ます。後者は、重複が存在する場合に削除と挿入を行います。これにより、キー管理のオーバーヘッドが生じます。また、自動インクリメント ID は置換時に同じままではありません。
ON DUPLICATE KEY UPDATE
LOAD DATA INFILE を使用する場合、どのようにエミュレートできますか?
mysql - INSERT、JOIN、および ON DUPLICATE KEY UPDATE を組み合わせることはできますか
今日の私のデータベース構造は次のとおりです...
inventory_transactions
quantity_offset
マイナスまたはプラスのいずれかの値を持つ在庫の移動を保管します。また、inventory_transaction_id
shipments
のグループである店舗inventory_transactions
出荷shipment_id
inventory_transactions
との関係shipments
は、shipment_inventory_transactions
私ができるようにしたいのはquantity_offset
、そのアイテムがすでに出荷に存在する場合、特定の在庫アイテムの数量を増やすことですinventory_transaction
。shipment
アイテムが存在しない場合は、必要な行を作成しinventory_transactions
ますshipment_inventory_transactions
と の組み合わせでこれができると思いますJOIN
がON DUPLICATE KEY UPDATE
、頭を包むことはできません。
状況を単純化するために、このshipment_inventory_transactions
テーブルを削除することを検討しています。これは、shippings と inventory_transactions の関係が 1 対 1 になるためです。ここでの唯一の問題は、各 inventory_transaction を出荷または受領のいずれかに関連付けることができますが、両方には関連付けることができないことです。両方を同じ列に格納するのは不自然に聞こえます。しかし、どちらか一方しか使用されないため、すべての行に余分な列を配置するのは好きではありません。
うーん…ブレインダンプ完了。これが理にかなっていて、私を逃した賢明な答えを提供できるなら、私は最も感謝しています.
sql - 重複を無視しますか?
その列を照会して返す方法はありますか
Select Distinct を使用すると、返されます
重複がある場合、1つだけを選択するのではなく、その値を持つ両方/すべての行を完全に無視するselectステートメントを作成するにはどうすればよいですか? しかし、これは左結合の右側のテーブルで選択されている単一の列です
c# - C#SQL左結合で右テーブルを選択して、それぞれのインスタンスを1つではなく、一意の値のみを返します
以下での作業:
Table2のLocationIDに複数の値がない限り、これはすべて正常に機能します。
私は無視したい:
そしてこれを入手してください:
しかし、私は欲しいです:
LocationIDが複製されていないためです。
また、私はしたい:
LocationIDが複製されていないためです。
必要な場合、またはより効率的になる場合は、次の前にこれらの行をTempDSから削除することもできます。
必要な場合、または最も効率的な場合でも、dgvQueryResultからエントリを削除してください