問題タブ [sql-delete]
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.
sql - 優先度の列に基づいてリストを重複排除するためのヒント
データは複数のソースから発信されているため、重複するエントリを含む行のセットがあります。これらのデータソースの優先度を示す別の参照テーブルもあります。
このリストを重複排除するための最も効果的なt-SQLのヒントはありますか?
基本的に私は持っています:
私はこれを一時テーブルに配置してから、より効率的であると思われる奇妙な方法で削除してきました。
表Aには、2つのソースの列が同じですが、データが異なる可能性があるため、価格が異なる可能性があります。課題は、最も優先度の高いソースからの行から価格(およびその他すべての情報)を取得する必要があることです。厄介なことに、私はすべてのソースからのすべてのアイテムのデータを持っているわけではありません。
したがって、アイテム1にはソースAとBからのデータが含まれている可能性がありますが、アイテム2にはソースBとCからのデータしか含まれていない可能性があります。したがって、削除は一意のアイテムごとに行う必要があります。
mysql - MySQL で数百万行を削除する
私は最近、私が取り組んでいたサイトでバグを見つけて修正しました。これにより、テーブル内に何百万ものデータの重複行が発生し、それらがなくても非常に大きくなります (まだ数百万)。これらの重複行を簡単に見つけることができ、単一の削除クエリを実行してそれらをすべて削除できます。問題は、一度にこれほど多くの行を削除しようとすると、テーブルが長時間ロックされることです。これは、可能であれば回避したいと考えています。(テーブルをロックすることによって) サイトをダウンさせずに、これらの行を取り除くことができる唯一の方法は次のとおりです。
- 数千の小さな削除クエリをループで実行するスクリプトを作成します。これにより、理論的にはロックされたテーブルの問題を回避できます。これは、他のクエリがキューに入って削除の間に実行できるためです。ただし、それでもデータベースの負荷がかなり高くなり、実行に時間がかかります。
- テーブルの名前を変更し、既存のテーブルを再作成します (現在は空になります)。次に、名前が変更されたテーブルでクリーンアップを行います。新しいテーブルの名前を変更し、古いテーブルの名前を元に戻して、新しい行を名前を変更したテーブルにマージします。これにはかなり多くの手順が必要ですが、中断を最小限に抑えて作業を完了する必要があります。ここで唯一難しいのは、問題のテーブルがレポート テーブルであることです。名前を変更して空のテーブルを元の場所に配置すると、元の場所に戻すまですべての履歴レポートが消えてしまいます。さらに、格納されているデータの種類が原因で、マージ プロセスが少し面倒になる可能性があります。全体として、これは今のところ私の選択の可能性が高いです。
他の誰かが以前にこの問題を抱えていたかどうか、もしそうなら、サイトを停止せずに、できればユーザーへの中断を最小限に抑えて、どのように対処したのだろうか? 2 番目の方法、または別の同様の方法を使用する場合、夜遅くに実行し、翌朝早くマージを実行するようにスケジュールを設定し、事前にユーザーに知らせることができるので、大したことではありません。誰かがクリーンアップを行うためのより良い、またはより簡単な方法についてアイデアを持っているかどうかを確認しているだけです.
mysql - 特定のmysqlテーブルの行の削除を禁止するには?
書き込みと読み取りは可能ですが、削除はできないように mysql テーブルを構成する方法はありますか?
たとえば、法的に重要で決して削除してはならない多くのログを含むテーブルです。
sql - 2つのデータベースから重複したレコードを削除します
私は2つの異なるデータベースから重複レコードを特定することができます。
重複したレコードをから削除するにはどうすればよいb
ですか?
私は試した:
しかし、それは私が必要とする以上のものを削除します。
mysql - MySQLはサブクエリのすべての結果を削除します
わかりましたので、バックストーリーが必要な場合は、私の前の質問を見てください
重複していないレコードを特定するのは非常に簡単です。
これにより、重複していないものがすべて返されます。そこで、それらを「no_duplicates」という別のテーブルに移動してから、元のテーブルから削除しようと考えました。次に、元のテーブルで重複をすべて単独で確認し、それらを修正して、no_dupes を追加し直すことができました。しかし、一方で:
魅力のように機能しますが、次のエラーがスローされます。
私の推測では、クエリはテーブル内に既に存在する一意のレコードを返しますが、集計関数による削除は適切ではありません。移動したレコードのみが削除されるようにするために他に何ができるかわからないことを除けば、これは理解できます。検索したところ、「元のテーブルのレコードを INSERT で削除した後」という構文は見つかりませんでした。削除が失敗したのと同じ理由で、とにかく失敗すると思います。
それで、誰かが欠けているピースを見つけるのを手伝ってくれませんか?
mysql - WHEREなしのDELETE後のMySQL自動インクリメント値
走って気づいた、
ID(自動インクリメント)の値がおかしくなった
私がするとき、この順序で、
認定ガイドには、WHEREなしのDELETEを使用してテーブルを空にするとIDがリセットされる場合とリセットされない場合があると記載されていますが、IDシーケンスが非常に奇妙になった原因は何ですか?それが行が挿入された順序であると確信しています。もともと削除する前はテーブルに6行あったので、7、8、9は理解できるようです。
python - Python MySQL-SELECTは機能しますが、DELETEは機能しませんか?
私はPythonとPythonのMySQLアダプターを初めて使用します。ここで明らかな何かが欠けているかどうかはわかりません:
何か案は?
mysql - PHPmyAdmin で SQL DELETE が失敗する
PHPmyAdmin で SQL DELETE がフォールオーバーします。理由がわかりません。LEFT OUTER JOINが原因ですか?
この SQL クエリは ( #1064 - You have an error in your SQL syntax; ) メッセージで失敗していますが、削除ではなく SELECT で完全に機能します。なぜですか?
sql - SQL一括削除
開発者がデータベースをローカルマシンにロードできるように、いくつかのデータベースを縮小しようとしています。X日より古いレコードを削除すると、データベース全体のサイズ(50%以上)が大幅に減少する履歴データ(10年以上の価値)を保持するテーブルをいくつか特定しました。
私が使用しているdeleteステートメントを以下に示しますが、私の質問は、このdeleteステートメントの速度をどのように改善できるかということです。データベースはすでに単純なログ形式になっていますが、ログは引き続きdeleteステートメントで大きくなります。より良いロギング方法はありますか?
私はこれを行う方が良いでしょうか:
- 保持したいデータを現在のテーブルから一時テーブルにコピーし、
- プライマリテーブルを切り捨て、
- データを一時からプライマリに戻し、
- シュリンクログ、
- 縮小する必要のあるすべてのテーブルを処理したら、データベースを縮小します。
クエリの例: