最近在一個項目中有這樣一個需求,在一個表A(id,num,adddate) 中 查詢出adddate 時間間隔相差兩秒以內的記錄!最後還是到csdn上求助(http://topic.csdn.net/u/20080509/16/786bcc61-5697-4762-be17-8d4c5955c28e.html) 問題才解決,sql語句如下
--建立測試環境
set nocount on
create table test(ID varchar(20),Num varchar(20),AddDate varchar(20))
insert into test select '1','5','2008-03-10 9:26:20'
insert into test select '2','2','2008-03-10 9:26:22'
insert into test select '3','2','2008-03-10 9:28:20'
insert into test select '4','2','2008-03-15 10:26:20'
insert into test select '5','6','2008-03-15 10:26:22'
go
--測試
select * from test a
where exists(select 1 from test where id<>a.id
and abs(datediff(s,a.AddDate,AddDate))<=2)
--刪除測試環境
drop table test
set nocount off
/**//*
1 5 2008-03-10 9:26:20
2 2 2008-03-10 9:26:22
4 2 2008-03-15 10:26:20
5 6 2008-03-15 10:26:22
*/
首先還感謝jinjazz 的協助,看到這個語句,發覺自己對exists 子查詢不能理解,以前對exists的使用也就是判斷某個條件的記錄是否存在。然後尋找sql2000 協助
EXISTS
指定一個子查詢,檢測行的存在。
文法
EXISTS subquery
參數
subquery
是一個受限的 SELECT 語句 (不允許有 COMPUTE 子句和 INTO 關鍵字)。有關更多資訊,請參見 SELECT 中有關子查詢的討論。
結果類型
Boolean
結果值
如果子查詢包含行,則返回 TRUE。
請理解的朋友幫忙解釋一下!