SQL語句中 in和exist區別
in 和 exists也是很好區別的.
in 是一個集合運算符.
a in {a,c,d,s,d。.}
這個運算中,前面是一個元素,后面是一個集合,集合中的元素類型是和前面的元素一樣的.
而exists是一個存在判斷,如果后面的查詢中有結果,則exists為真,否則為假.
in 運算用在語句中,它后面帶的select 一定是選一個字段,而不是select *.
比如說你要判斷某班是否存在一個名為"小明"的學生,你可以用in 運算:
"小明" in (select sname from student)
這樣(select sname from student) 返回的是一個全班姓名的集合,in用于判斷"小明"是否為此集合中的一個數據;
同時,你也可以用exists語句:
exists (select * from student where sname="小明")
sql 語句中 = 和 in 的區別
SQL 中,等于就是唯一條件,例如id = 1,那么就查出id 是 1的數據行。
而in 或者 not in 就是在某個范圍內或者不在某個范圍內。
當一個查詢是另一個查詢的條件時,稱之為子查詢。其實這也就是嵌套查詢。
例如 selete top 10 from student where age > 10
查找年齡大于10歲的孩子的前十個。
where age > 10就是作為子查詢的存在。
你上面問的in 之類的,其實一般也是用于嵌套查詢的。
請教一個關于SQL語句中in的相關問題
拜托,int [] cID 這個變量時。net程序里面的數組, sql=“”語句則是要放到sql2005這個dbms里面執行,他們兩個是不同的系統怎么能直接寫在sql里面??如果你要那樣實現,應該先把cID這樣的數組值先insert到一個臨時表里面,然后在sql里面這樣寫
where id in (select cID from 臨時表),
如果cID里面值不多,可以用拼字符串來實現,就是你說的那個意思,只是拼字符串的方法不對,應該是
for (i=0 ,i++ ,i{sql_str1 = convertostring(cID[i]) +','+sql_str1} ;
sql="******* where id in (" + sql_str1 +")";
最后輸出sql檢查下,如果沒問題就ok了
請教一個關于SQL語句中in的相關問題
拜托,int [] cID 這個變量時。
net程序里面的數組, sql=“”語句則是要放到sql2005這個dbms里面執行,他們兩個是不同的系統怎么能直接寫在sql里面??如果你要那樣實現,應該先把cID這樣的數組值先insert到一個臨時表里面,然后在sql里面這樣寫where id in (select cID from 臨時表),如果cID里面值不多,可以用拼字符串來實現,就是你說的那個意思,只是拼字符串的方法不對,應該是for (i=0 ,i++ ,i<*){sql_str1 = convertostring(cID[i]) +','+sql_str1} ; sql="******* where id in (" + sql_str1 +")";最后輸出sql檢查下,如果沒問題就ok了。
sql 語句中in ,not in
如果系統不自動優化,并且IN的結果很多,那么有可能IN和NOT IN的效率低些。
所有的IN都可以轉換為EXISTS,同樣NOT IN可以轉換為NOT EXISTS,下面說明IN轉換為EXISTS的方法,NOT的類似:
IN的語句:
SELECT * FROM A WHERE F IN (SELECT F FROM B)
可以轉換為如下的EXISTS語句:
SELECT * FROM A WHERE EXISTS
(SELECT * FROM B WHERE A.F=B.F)
上面轉換的說明:兩個WHETE都可能有更多都條件,那么直接AND在相應的地方即可。另外表A和B的關聯字段可能名字表同,也司沒關系的。