Select
檢查表中是否有相似的行
作為 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 ( ) 期間的
ID
s 。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