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

推薦する

JavaScript 定期検証パスワード強度実装方法

展示する デザインパスワード強度分析パスワードは数字、文字、特殊記号で構成されていますパスワード: ...

Mysqlトランザクション操作の失敗を解決する方法

Mysqlトランザクション操作の失敗を解決する方法トランザクションの原子性: トランザクションは、デ...

純粋な CSS3 で蝶が羽ばたく様子を再現する例

純粋なCSS3で蝶が羽ばたく様子を再現。まずはその効果をご覧ください どうですか?効果はかなりいいで...

VMware IOInsight を使用して、仮想マシンのストレージ パフォーマンスの監視を改良する

例: VMware IOInsight は、VM のストレージ I/O 動作を理解するのに役立つツー...

MyISAMとInnoDBの違いについてお話しましょう

主な違いは次のとおりです。 1. MySQL はデフォルトで MyISAM を使用します。 2. M...

Linux での MySQL のアンインストールとインストールのグラフィック チュートリアル

ブログを書くのは初めてです。開発に携わって2年になります。仕事の後に何か有意義なことを見つけたいと思...

DockerでGit環境を構築して構成するプロセス

DockerでGit環境を構成する仕事上、Docker 環境で GitLab リポジトリを操作する必...

Ubuntuはポート22を開きます

シナリオssh 経由で Ubuntu サーバーに接続するには、xshell ツールを使用する必要があ...

Ubuntu 20.04 に GitLab をインストールして設定する方法

導入GitLab CE または Community Edition は、主に Git リポジトリのホ...

Centos7 に Zabbix3.0 をインストールするための非常に詳細な手順

序文最近、同社の業務の一部がコンピュータルームに移転し、ホストリソースの監視と管理をより便利に行うた...

Vue.js で AntV X6 を使用する手順の例

目次0x0 はじめに0x1 インストール0x2 ノードサイドバー0x3 統合例0x0 はじめにプロジ...

qt.qpa.plugin の問題を解決: Ubuntu 18.04 の Qt で Qt プラットフォーム プラグイン「xcb」をロードできませんでした

問題の説明Qt5.15.0 をインストールした後、テスト ケースを実行するとエラーが表示されます。 ...

MySQL のソート関数 field() の詳細な例

序文私たちの日常の開発プロセスでは、ソートが頻繁に使用され、そのような要求がある場合もあります。たと...

CSS ピックアップ矢印、カタログ、アイコン実装コード

1. CSS その他のアイコンアイコンを作成するには 3 つの方法があります。写真css (小さな矢...

HTML ブロックレベルタグとインラインタグの違い

1. ブロックレベル要素: 独立して存在できる能力を指します。通常、ブロックレベル要素は改行によって...