MySQL の自己結合重複排除に関する注意事項

MySQL の自己結合重複排除に関する注意事項

機能シナリオを簡単に説明しましょう。

データ行フィールドは次のとおりです。

名前
開始日時
タイプ

この表では、名前に重複した値があります

ここで、タイプが決定されたときにリストをフィルタリングして、名前が重複しないようにし、同じ名前で started_at が最小のレコードが見つかるようにする必要があります。

例えば:

イベント 1 2019-06-01 タイプ1
イベント 1 2019-06-02 タイプ1
イベント 1 2019-06-03 タイプ1

イベント 2 2019-06-03 タイプ1
イベント 2 2019-06-05 タイプ1
イベント 2 2019-06-07 タイプ1

ふるいリストは次のようになります。

イベント 1 2019-06-01 タイプ1
イベント 2 2019-06-03 タイプ1

また、started_atが現在の時刻より大きいことも満たす必要があります。

このようなSQLはどのように記述すればよいでしょうか?

解決策は次のとおりです。

左結合自体を使用することです

たとえば、 s1 left join s2 on s1.name=s2.name and s2.started_at<s1.started_at and s2.started_at > now()

最後にwhere s2.id is null

選択
 s1.名前、
 s1.開始日時、
 
から
 表 s1
 LEFT JOIN tbl s2 ON s1.`name` = s2.`name` 
  かつ、s1.started_at > s2.started_at 
  かつ s2.started_at > now() 
どこ
  s2.id が NULL です 
  かつ、s1.started_at > now() 
 かつ s1.type = 'online_lecture'
注文する
 s1.名前、
 s1.開始日時;

もっと良い解決策を持っている人はいますか?

要約する

以上がこの記事の全内容です。この記事の内容が皆様の勉強や仕事に何らかの参考学習価値をもたらすことを願います。123WORDPRESS.COM をご愛顧いただき、誠にありがとうございます。

以下もご興味があるかもしれません:
  • MySQL の分析: 単一テーブルを区別し、複数テーブルをグループ化して重複レコードを削除するクエリ
  • フィールド内の重複情報を削除するmysql SELECT文
  • MySQLで重複データを削除する詳細な例
  • 1つのSQL文でMySQLの重複排除が完了し、1つが保持されます。
  • MySQLの重複排除方法
  • MySQL 開発スキル: JOIN 更新とデータ重複チェック/重複排除
  • Mysql 重複データを削除 Mysql データ重複排除
  • MySQL における重複排除の 2 つの方法とサンプル コードの詳細な説明
  • 重複したMySQLテーブルをマージして削除する簡単な方法
  • MySQLの重複排除操作を極限まで最適化する方法
  • MySQL 最適化のヒント: 重複削除の実装方法の分析 [数百万のデータ]

<<:  Linux の traceroute コマンドの使用方法の詳細な説明

>>:  npmとcnpmを混在させる際の落とし穴の詳細な説明

推薦する

jQuery ツリービュー ツリー構造アプリケーション

この記事では、jQueryツリービューツリー構造のアプリケーションコードを例として紹介します。具体的...

Docker可視化管理ツールであるDocker UIの使用

1. DockerUIの紹介DockerUI は Docker API をベースとしており、Dock...

MYSQL 演算子の概要

目次1. 算術演算子2. 比較演算子3. 論理演算子4. ビット演算子5. 演算子の優先順位1. 算...

Linux シェル環境での Zabbix API の使用

Linux シェル環境で直接呼び出すことができます。公式 Web サイトによると、Zabbix のデ...

Apache での ModSecurity のインストール、有効化、および構成

ModSecurity は、Web サーバーに入るすべてのパケットをチェックする強力なパケット フィ...

MySQL sql_modeクエリと設定の詳細な説明

1. SQLを実行して表示する @@session.sql_mode を選択します。 グローバルレベ...

単純なCSSの詳細に惚れ込むと、重要ではないものの、効率性が向上する可能性がある

CSS の将来は非常に楽しみです。一方では、まったく新しいページ レイアウト方法であり、他方では、ク...

MySQL数千万の大規模データに対する30のSQLクエリ最適化テクニックの詳細な説明

1. クエリを最適化するには、テーブル全体のスキャンを避けてください。まず、where と orde...

MySql への新しいユーザーの追加、ユーザー用のデータベースの作成、ユーザーへの権限の割り当ての概要

1. 新しいユーザーを追加するローカルIPアクセスのみを許可する '123456' ...

MySQLの外部結合と内部結合クエリの違い

外部結合の構文は次のとおりです。フィールド名を選択FROM テーブル名 1 LEFT|RIGHT|F...

MacでDockerがホストマシンにpingできない問題を解決する

解決Docker for Macに付属するLinux仮想マシン(軽量ですが、ソケットファイルを使用し...

Vue.js と MJML でレスポンシブなメールを作成する

MJML は、開発者が美しく、応答性に優れ、あらゆるデバイスやメール クライアントで動作する魅力的な...

HTML フローティング フレーム (iframe 読み込み HTML) の設定と使用の例

コードをコピーコードは次のとおりです。 <!DOCTYPE html PUBLIC "...

Nginx のリロード プロセスの背後にある真実を探る

本日の記事では、主にNginxのリロードプロセスについて紹介します。実は前回の記事では、nginx ...

Angular CDK を使用してサービスポップアップトーストコンポーネント機能を実装する

目次1. 環境設備2. ToastコンポーネントとToastServiceを作成する2.1 Toas...