理解 sql 中exists 子查詢

來源:互聯網
上載者:User

最近在一個項目中有這樣一個需求,在一個表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。

請理解的朋友幫忙解釋一下!



 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.