ホームページ >データベース >mysql チュートリアル >重複する日付間隔を効率的に結合するにはどうすればよいでしょうか?
重複する日付間隔のマージ: 効率的なアプローチ
重複する日付間隔をマージするタスクは、さまざまなコンテキストで頻繁に発生します。この問題に対処する一般的なアプローチの 1 つは、重複がなくなるまで間隔を繰り返し更新することです。この方法は比較的単純ですが、より効率的な代替手段が存在するかどうかという疑問が生じます。
代替アプローチ:
重複する日付間隔をマージする代替アプローチが提案されています。関連するフォーラムのスレッド内のユーザーによるもの。このメソッドは、結合と条件付きロジックの組み合わせを利用して、目的の結果を実現します。
SELECT s1.StartDate, MIN(t1.EndDate) AS EndDate FROM @T s1 INNER JOIN @T t1 ON s1.StartDate <= t1.EndDate AND NOT EXISTS(SELECT * FROM @T t2 WHERE t1.EndDate >= t2.StartDate AND t1.EndDate < t2.EndDate) WHERE NOT EXISTS(SELECT * FROM @T s2 WHERE s1.StartDate > s2.StartDate AND s1.StartDate <= s2.EndDate) GROUP BY s1.StartDate ORDER BY s1.StartDate
説明:
このアプローチは次のように機能します:
利点:
例:
元の質問で提供された同じサンプル データを使用すると、次の結果が得られます:
StartDate | EndDate |
---|---|
2010-01-01 | 2010-06-13 |
2010-06-15 | 2010-06-25 |
2010-06-26 | 2010-08-16 |
2010-11-01 | 2010-12-31 |
結論:
提示された代替アプローチは、重複する日付間隔をマージします。結合と条件付きロジックの組み合わせを活用して目的の結果を達成し、反復アプローチに代わる実行可能な代替手段を提供します。
以上が重複する日付間隔を効率的に結合するにはどうすればよいでしょうか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。