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を混在させる際の落とし穴の詳細な説明

推薦する

MySQL のストアド プロシージャを使用して 100 万件のレコードをすばやく生成する方法

序文テストを行う際、大量のデータによる負荷に耐えるプロジェクトの能力をテストするために、通常はテスト...

MYSQL スロークエリとログ設定とテスト

1. はじめにスロークエリログを有効にすると、MySQL は指定された時間を超えるクエリステートメン...

CentOS7にJDK8をrpmモードでインストールする

CentOS 7が正常にインストールされると、OpenJDKのJREがデフォルトでインストールされて...

Docker 入門インストールチュートリアル (初心者版)

ドクター紹介: Docker はコンテナ関連の技術です。簡単に言うと、さまざまなソフトウェアを実行で...

pt-heartbeat を使用して MySQL レプリケーションの遅延を監視する方法の詳細な説明

pt-ハートビートデータベースがマスターとスレーブ間で複製される場合、複製ステータスとデータ遅延は非...

Reactにおけるフックの一般的な使用法

目次1. フックとは何ですか? 2. フックはなぜ現れるのでしょうか? 3. よく使われるフックは何...

JavaScript の例におけるループの使用法の詳細な説明

退屈だったので、ループに関する簡単な演習をいくつかまとめてみました。JS を学び始めたばかりの方に役...

HTML フォームを送信するいくつかの方法_PowerNode Java Academy

方法1: 送信ボタンから送信する <!DOCTYPE html> <html>...

MySQLとRedisでセカンダリキャッシュを実装する方法の詳細な説明

Redis の紹介Redis は完全にオープンソースで無料であり、BSD プロトコルに準拠しており、...

パスワードログインなしのLinux構成スタンドアロンおよびフルディストリビューションの詳細なチュートリアル

目次1: 単一マシンのパスワードフリーログイン構成1. 仮想マシンのホスト名を設定する2. 仮想マシ...

ウェブデザインの発展と西洋建築の類似点は何でしょうか?

歴史は常に驚くほどうまく繰り返される。西洋建築とウェブデザインは、どちらも工学と芸術の組み合わせです...

MySQL 集計関数のネストされた使用操作

目的: MySQL 集計関数のネストされた使用集計関数は直接ネストできません。例: max(coun...

nginx.pid を開く際の失敗と無効の解決策

目次1. 問題の説明2. 問題分析3. 解決策解決策1: ディレクトリを作成する解決策2: 構成ファ...

10分でCSS3グリッドレイアウトを理解する

基本的な紹介前回の記事では、CSS3 のフレックスボックスを紹介しました。今日は、CSS3 のもう ...