ホームページ >データベース >mysql チュートリアル >2 つの SQL テーブル間の重複する時間間隔を見つける方法

2 つの SQL テーブル間の重複する時間間隔を見つける方法

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2025-01-03 21:44:43141ブラウズ

How to Find Overlapping Time Intervals Between Two SQL Tables?

SQL での 2 つのテーブル間の重複する時間間隔の検索

開始時刻フィールドと終了時刻フィールドを含む 2 つのテーブルを持つデータベースでは、多くの場合、これが必要になります。時間間隔が交差する行を識別します。この質問では、SQL Server 2005 で WHERE 句を使用してこのような重複を効率的に見つけるための解決策を提供します。

解決策:

次のクエリを使用して、重複する時間を見つけることができます。 table1 の行間の間隔とtable2:

SELECT * 
FROM table1,table2 
WHERE table2.start <= table1.end 
AND (table2.end IS NULL OR table2.end >= table1.start)

説明:

クエリは JOIN 条件を使用して、両方のテーブルの時間間隔を比較します。 WHERE 句では 2 つの条件が使用されます。

  1. table2.start <= table1.end は、行 2 (table2) の開始時刻が行の終了時刻よりも前または同時に発生することを保証します。 1 (table1).
  2. (table2.end IS NULL OR table2.end >= table1.start) は、次の場合を処理します。 table2 の終了時刻が NULL であるか、table1 の開始時刻以降に発生します。この条件により、重複する間隔が確実にキャプチャされます。

この WHERE 句は、行 2 の時間間隔が行 1 の時間間隔と交差するかどうかを効果的に決定します。結合を使用することで、クエリは効率的に行を取得します。このような重複が存在する両方のテーブルから。

以上が2 つの SQL テーブル間の重複する時間間隔を見つける方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。