sql >> データベース >  >> RDS >> Sqlserver

SQLサーバーで重複する範囲を確認するためのクエリ?

    重複を見つける最も簡単な方法は次のとおりです:

    IF EXISTS (SELECT 1 FROM table WHERE @myValueLo <= ExistingRangeEnd AND @myValueHi >= ExistingRangeStart)
      -- Overlaps
    ELSE
      -- Doesn't overlap
    

    上記の条件を下の図の各バーと比較すると、これが機能していることがわかります。

    Existing range:         |-------------------|
    Overlaps:       |-------------|       |------------|
                    |----------------------------------|
                               |-------------|
    Not overlaps:   |-----|                       |----|
    

    重複するすべてのケースで、これらのテストは両方とも当てはまります。

    • 開始日 既存の範囲のは常に終了日より前です 新しい範囲の
    • 終了日 既存の範囲の開始日以降 新しい範囲の

    重複しないものは、このテストのいずれかに失敗します。



    1. mysqlのデフォルトエンジンをinnodbに変更します

    2. C++MySQLリンカーエラー

    3. エラー1114(HY000):テーブル'XXX'がいっぱいです

    4. oracle sqlは時差を検索します(両方とも文字列内の時間)