當前位置:首頁 » 編程語言 » sql中notexists

sql中notexists

發布時間: 2022-12-24 15:05:50

1. 關於sql語句 (not exists)

not exits{ 是信息系 not exits(參加項目) }
為什麼是 信息系參加項目的
-- 不存在(是信息系 不存在(參加項目))
選出 不是信息系裡且不參加項目的人
選出 除過信息系裡參加項目的人和其他系的什麼什麼

2. SQL語句 比較麻煩的not exists 增加條件

SELECT * FROM table1
WHERE table1.xd <> 'XC' and table1.xd <> 'RK'
and not exists (SELECT ph from table2
WHERE djlx = 'WGD' and table1.ph=table2.ph ) 試試

3. sql 中的not exists是什麼意思 誰能具體說一下

我的字面理解 就是「不存在」 一般多判斷表或者資料庫的存在
http://soft.zdnet.com.cn/software_zone/2009/1221/1568274.shtml

4. sql中not exists用法

恩,對的,其實寫法很多

1、
select id from a where id not in (select id_no from b)

2、
select id from a
except
select id_no from b

5. sql server中not in,in與not exists,exists有什麼不同

我給你舉幾個例子你感受一下。

(1)select*fromstudentwhereclassnotin('1','2','3')

查詢班級不在1,2,3的學生信息

(2))select*fromstudentwhereclassin('1','2','3')

查詢班級在1,2,3的學生信息

in和notin的用法,更多會出現在子查詢中,

例如select*fromstudentwheresnoin(selectsnofromExamwherecourse='English')查詢參加了英語考試的學生信息。

(3)exists更多時候出現在if判斷中,它只做一個是或否的判斷,例如如果存在birthday=今天的學生,那麼就把他的age+1

ifexists(=getdate())
BEGIN
updatestudentsetage=age+1wherebirthday=getdate()
END
else
selectN'今天沒有同學過生日'

6. 怎麼用用sql語句中的not exists來寫語句

USE pubs
GO
SELECT DISTINCT pub_name
FROM publishers
WHERE EXISTS
(SELECT *
FROM titles
WHERE pub_id = publishers.pub_id
AND type = 'business')
GO

-- Or, using the IN clause:

USE pubs
GO
SELECT distinct pub_name
FROM publishers
WHERE pub_id IN
(SELECT pub_id
FROM titles
WHERE type = 'business')
GO

下面是任一查詢的結果集:

pub_name
----------------------------------------
Algodata Infosystems
New Moon Books

7. Sql中not exists, 如何用linq表示

你要說完全一樣,那是不太可能的。
第一,你的語句本身就有優化空間。
你的和如下的sql 等效:
select * from table1 as t1
where not Exists(select null from table2 where t1.id=t2.id)
如上可減少內存空間交換輸出。
------------------------------------------------------------------
linq:如下是檢索沒有明細的訂單,跟你的要求一樣. 你改成t1 t2 就行了

from x in Orders
where !Order_Details.Any(t => t.Detail_Order_ID != x.Order_NO)
select x

如上轉化成的sql是:
SELECT [t0].[order_ID] AS [Order_ID], [t0].[order_NO] AS [Order_NO]
FROM [Order] AS [t0]
WHERE NOT (EXISTS(
SELECT NULL AS [EMPTY]
FROM [Order_Detail] AS [t1]
WHERE [t1].[detail_Order_ID] <> [t0].[order_NO]
))
----------
如上的寫法應該夠水準。回頭給我多加紅包哦!

8. sql中 not exists的問題

那你這個查詢結果應該是為空。
not exists 的用法是 沒有返回結果 為真。
EXCEPT是指在第一個集合中存在,但是不存在於第二個集合中的數據。
你A系有沒有被學生選擇的課程。也就是說not exists是有返回值的。有返回值那表示1=0 所以為空

9. SQL語句中exists和not exists的用法,講得通俗易懂些。

exists : 強調的是是否返回結果集,不要求知道返回什麼, 比如:
select name from student where sex = 'm' and mark exists(select 1 from grade where ...) ,只要
exists引導的子句有結果集返回,那麼exists這個條件就算成立了,大家注意返回的欄位始終為1,如果改成「select 2 from grade where ...」,那麼返回的欄位就是2,這個數字沒有意義。所以exists子句不在乎返回什麼,而是在乎是不是有結果集返回。

而 exists 與 in 最大的區別在於 in引導的子句只能返回一個欄位,比如:
select name from student where sex = 'm' and mark in (select 1,2,3 from grade where ...)
,in子句返回了三個欄位,這是不正確的,exists子句是允許的,但in只允許有一個欄位返回,在1,2,3中隨便去了兩個欄位即可。

而not exists 和not in 分別是exists 和 in 的 對立面。
exists (sql 返回結果集為真)
not exists (sql 不返回結果集為真)
下面詳細描述not exists的過程:
如下:
表A
ID NAME
1 A1
2 A2
3 A3

表B
ID AID NAME
1 1 B1
2 2 B2
3 2 B3

表A和表B是1對多的關系 A.ID => B.AID

SELECT ID,NAME FROM A WHERE EXISTS (SELECT * FROM B WHERE A.ID=B.AID)
執行結果為
1 A1
2 A2
原因可以按照如下分析
SELECT ID,NAME FROM A WHERE EXISTS (SELECT * FROM B WHERE B.AID=1)
--->SELECT * FROM B WHERE B.AID=1有值返回真所以有數據

SELECT ID,NAME FROM A WHERE EXISTS (SELECT * FROM B WHERE B.AID=2)
--->SELECT * FROM B WHERE B.AID=2有值返回真所以有數據

SELECT ID,NAME FROM A WHERE EXISTS (SELECT * FROM B WHERE B.AID=3)
--->SELECT * FROM B WHERE B.AID=3無值返回真所以沒有數據

NOT EXISTS 就是反過來
SELECT ID,NAME FROM A WHERENOT EXIST (SELECT * FROM B WHERE A.ID=B.AID)
執行結果為
3 A3
===========================================================================
EXISTS = IN,意思相同不過語法上有點點區別,好像使用IN效率要差點,應該是不會執行索引的原因
SELECT ID,NAME FROM A WHEREID IN (SELECT AID FROM B)

NOT EXISTS = NOT IN ,意思相同不過語法上有點點區別
SELECT ID,NAME FROM A WHEREIDNOT IN (SELECT AID FROM B)

有時候我們會遇到要選出某一列不重復,某一列作為選擇條件,其他列正常輸出的情況.
如下面的表table:
Id Name Class Count Date
1 蘋果 水果 10 2011-7-1
1 桔子 水果 20 2011-7-2
1 香蕉 水果 15 2011-7-3
2 白菜 蔬菜 12 2011-7-1
2 青菜 蔬菜 19 2011-7-2
如果想要得到下面的結果:(Id唯一,Date選最近的一次)
1 香蕉 水果 15 2011-7-3
2 青菜 蔬菜 19 2011-7-2
正確的SQL語句是:
SELECT Id, Name, Class, Count, Date
FROM table t
WHERE (NOT EXISTS
(SELECT Id, Name, Class, Count, Date FROM table
WHERE Id = t.Id AND Date > t.Date))
如果用distinct,得不到這個結果, 因為distinct是作用與所有列的
SELECT DISTINCT Id, Name, Class, Count, Date FROM table
結果是表table的所有不同列都顯示出來,如下所示:
1 蘋果 水果 10 2011-7-1
1 桔子 水果 20 2011-7-2
1 香蕉 水果 15 2011-7-3
2 白菜 蔬菜 12 2011-7-1
2 青菜 蔬菜 19 2011-7-2
如果用Group by也得不到需要的結果,因為Group by 要和聚合函數共同使用,所以對於Name,Class和Count列要麼使用Group by,要麼使用聚合函數. 如果寫成
SELECT Id, Name, Class, Count, MAX(Date)
FROM table
GROUP BY Id, Name, Class, Count
得到的結果是
1 蘋果 水果 10 2011-7-1
1 桔子 水果 20 2011-7-2
1 香蕉 水果 15 2011-7-3
2 白菜 蔬菜 12 2011-7-1
2 青菜 蔬菜 19 2011-7-2
如果寫成
SELECT Id, MAX(Name), MAX(Class), MAX(Count), MAX(Date)
FROM table
GROUP BY Id
得到的結果是:
1 香蕉 水果 20 2011-7-3
2 青菜 蔬菜 19 2011-7-2
如果用in有時候也得不到結果,(有的時候可以得到,如果Date都不相同(沒有重復數據),或者是下面得到的Max(Date)只有一個值)
SELECT DISTINCT Id, Name, Class, Count, Date FROM table
WHERE (Date IN
(SELECT MAX(Date)
FROM table
GROUP BY Id))
得到的結果是:(因為MAX(Date)有兩個值2011-7-2,2011-7-3)
1 桔子 水果 20 2011-7-2
1 香蕉 水果 15 2011-7-3
2 青菜 蔬菜 19 2011-7-2
注意in只允許有一個欄位返回
有一種方法可以實現:
SELECT Id, Name, Class, COUNT, Date
FROM table1 t
WHERE (Date =
(SELECT MAX(Date)
FROM table1
WHERE Id = t .Id))

10. 關於SQL語句中exists與not exists的問題

EXISTS或者NOT EXISTS是把主查詢的欄位傳到後邊的查詢中作為條件,返回值是TRUE或者FALSE。EXISTS TRUE,那麼就是查詢條件成立,結果會顯示出來。NOT EXISTS TRUE,則為FALSE,查詢連接條件不成立。
select * from course where not exists(select * from grade where grade.課程代號=course.課程代號)
這個語句,是查詢course表中課程代號在grade中沒有出現的數據。
看看grade表,課程編號有K01到K06,而COURSE表,有K01到K07,那麼K07在GRADE表是不存在的,那麼,是符合條件的。
同樣select * from course where exists(select * from grade where grade.課程代號=course.課程代號)
則是查詢COURSE的記錄條件為編號在GRADE中存在。那麼很明顯,結果是K01到K06的數據。
另外,EXISTS和NOT EXISTS的作用可以用IN或NOT IN實現,但是,效率要高。
因為EXISTS和NOT EXISTS返回的結果是TRUE或者FALSE,那麼則在子查詢中,遇到第一個符合條件的結果,就會退出查詢,而不會進行全表的檢索。而NOT IN或者IN,要把子查詢中的SELECT字句全部查詢出來才行。

熱點內容
上傳日上限 發布:2024-05-16 22:26:08 瀏覽:858
c語言基本概念 發布:2024-05-16 21:44:16 瀏覽:190
sqlserver跨庫查詢 發布:2024-05-16 21:36:56 瀏覽:164
sql多表連接語句 發布:2024-05-16 21:21:53 瀏覽:301
sqlscope 發布:2024-05-16 21:17:37 瀏覽:966
存儲器通常有 發布:2024-05-16 21:17:35 瀏覽:379
雲資料庫概念 發布:2024-05-16 21:17:32 瀏覽:819
鋪地板編程 發布:2024-05-16 21:07:36 瀏覽:459
蘋果手機緩存刪除 發布:2024-05-16 21:04:35 瀏覽:507
scratch編程電子書 發布:2024-05-16 21:02:54 瀏覽:227