數(shù)據(jù)庫中in的用法
數(shù)據(jù)庫中in的用法
數(shù)據(jù)庫中in的用法的用法你知道嗎?下面小編就跟你們詳細(xì)介紹下數(shù)據(jù)庫中in的用法的用法,希望對你們有用。
數(shù)據(jù)庫中in的用法的用法如下:
IN:確定給定的值是否與子查詢或列表中的值相匹配。
IN 關(guān)鍵字使您得以選擇與列表中的任意一個(gè)值匹配的行。
SELECT ProductID, ProductName FROM Northwind.dbo.Products WHERECategoryID IN (1, 4, 5)
IN 關(guān)鍵字之后的項(xiàng)目必須用逗號隔開,并且括在括號中。
NOT IN:通過 NOT IN關(guān)鍵字引入的子查詢也返回一列零值或更多值。
以下查詢查找沒有出版過商業(yè)書籍的出版商的名稱。
SELECTpub_name FROM publishers WHERE pub_id NOT IN (SELECT pub_id FROM titles WHEREtype = 'business')
使用 EXISTS和 NOT EXISTS引入的子查詢可用于兩種集合原理的操作:交集與差集。兩個(gè)集合的交集包含同時(shí)屬于兩個(gè)原集合的所有元素。
差集包含只屬于兩個(gè)集合中的第一個(gè)集合的元素。
EXISTS:指定一個(gè)子查詢,檢測行的存在。
SELECT DISTINCT pub_name FROM publishers WHERE EXISTS (SELECT *FROM titles WHERE pub_id = publishers.pub_id AND type =
'business')
SELECTdistinct pub_name FROM publishers WHERE pub_id IN (SELECT pub_id FROM titlesWHERE type = 'business')
兩者的區(qū)別:
EXISTS:后面可以是整句的查詢語句如:SELECT *FROM titles
IN:后面只能是對單列:SELECTpub_id FROM titles
NOT EXISTS:
例如,要查找不出版商業(yè)書籍的出版商的名稱:
SELECTpub_name FROM publishers WHERE NOT EXISTS (SELECT * FROM titles WHERE pub_id =publishers.pub_id AND type =
'business')
下面的查詢查找已經(jīng)不銷售的書的名稱:
SELECT titleFROM titles WHERE NOT EXISTS (SELECT title_id FROM sales WHERE title_id =titles.title_id)
例子:
//驗(yàn)證有發(fā)布產(chǎn)品的公司個(gè)數(shù)
select id,name from company where exists (select * from product where comid=company.id)
select id,name from company where id in(select comid from product)
//驗(yàn)證沒有發(fā)布產(chǎn)品的公司個(gè)數(shù)
select id,name from company where not exists (select * from product where comid=company.id)
select id,name from company where id not in(select comid from product)