Select

檢查表中是否有相似的行

  • June 27, 2016

作為 SQL 新手,我在創建查詢時遇到了問題。

這是問題:我想檢查一個表是否有共享相同日期的行。

例如,我想知道在表 A 中是否有這樣的情況:

ID | LIB | START_DATE | END_DATE
01 | A1  | 01-01-2016 | 05-03-2016
02 | A2  | 03-03-2016 | 05-06-2016

這些行是 SURVEYS,我想知道管理員是否創建了在其他調查期間開始的調查。我對 AUTO JOIN 進行了一些搜尋,但這並不是我真正想要的。

我的案子有點複雜,但如果你解釋如何處理這個簡單的案子,我會發現自己。

必須是這樣的:

select   s1.id, s2.id
from     surveys s1, surveys s2
where    (s2.start_date between s1.start_date and s1.end_date
or        s2.end_date   between s1.start_date and s1.end_date)
and      s1.id!=s2.id;

這將為您獲取or (of ) 在另一個and ( ) 期間的IDs 。START_DATE``END_DATE``s2``START_DATE``END_DATE``s1

這將是準確的

select min(id), max(id)  
from table 
group by start_da, end_date 
having count(*) > 1

開始於

select t1.*, t2*
from table t1 
join table t2
     on t1.startdate between t2.startdate and t2.end_date

引用自:https://dba.stackexchange.com/questions/142366