sql語句not in 和not 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 ,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的關聯字段可能名字表同,也司沒關系的。
SQL語句中WHERE NOT EXISTS ; WHERE title NOT IN; WHERE title
先說exists 英文存在的意思, 父查詢where not exists(子查詢)---不存在子查詢則滿足父查詢出發條件, where 字段 not in(子查詢),如 select * from表名 where 學號 not in(select學號from表名where成績<60)------子查詢是 成績小于60的人的學號,父查詢是學號不在(子查詢出來的學號)這里的人,,,所以整個查詢是 成績>60的人的信息,, ----------不知道我舉得例子你看明白沒。
轉載請注明出處華閱文章網 » sql語句notin什么意思