【SQL】exists
exists用來判斷是否存在的;當exists(查詢)存在結果時,返回TRUE,否則返回FALSE。
not exists與之相反。
exists V.S. in
如果查詢的兩個表大小相當,則exists與in的差別不大。
如果兩個表中一個較大,一個較小,則子查詢表大的用exits,子查詢表小的用in。
例如表A(小表),表B(大表),則:
select * from A where cc in (select cc from B)
效率低,用到了表A上cc列的索引。
select * from A where exists(select cc from B where cc=A.cc)
效率高,用到了表B上cc列的索引。
另外,在in後的查詢語句中,只能有一個表示式,如
select * from A where cc in (select cc from B) // OK
select * from A where cc in (select cc , id from B) // ERROR
而exists的子查詢語句可以有多個表示式.
在Update中使用exists
當exists用於update中的where條件時,當exits返回TRUE,則執行update,否則不執行。
如下兩張表:
select * from EXISTSTABLE1
id name
1 a
2 b
3 c
select * from EXISTSTABLE2
id name
1 d
3 e
不使用exists更新表1中的值
update EXISTSTABLE1 set name = (select name from EXISTSTABLE2 where EXISTSTABLE1.id = EXISTSTABLE2.id)
表1中的結果:
id name
1 d
2 NULL
3 e
(3 row(s) affected)
使用exists更新表1中的值
update EXISTSTABLE1 set name = (select name from EXISTSTABLE2 where EXISTSTABLE1.id = EXISTSTABLE2.id)
where exists (select 1 from EXISTSTABLE2 where EXISTSTABLE1.id = EXISTSTABLE2.id)
表1中的結果:
id name
1 d
2 b
3 e
(2 row(s) affected)
相關文章
- sql:delete if exists還是drop if exists?SQLdelete
- SQL中IN,NOT IN,EXISTS,NOT EXISTS的用法和差別SQL
- SQL中EXISTS的使用SQL
- Oralce 使用SQL中的exists 和not exists 用法詳解SQL
- [精選] SQL中的IN與NOT IN、EXISTS與NOT EXISTS的區別及效能分析SQL
- SQL語句中exists和in的區別SQL
- exists子句在Sql中的含義SQL
- SQL中IN和EXISTS用法的區別SQL
- oracle sql_not exists與null的測試OracleSQLNull
- 對線面試官:SQL中的IN與NOT IN、EXISTS與NOT EXISTS的區別及效能分析面試SQL
- [Oracle] exists 和 not existsOracle
- sql中in和exists的原理及使用場景。SQL
- EXISTS、IN、NOT EXISTS、NOT IN用法區別
- 對IN & EXISTS NOT IN & NOT EXISTS的優化優化
- EXISTS、IN、NOT EXISTS、NOT IN的區別(ZT)
- in/exists和not in/not exists執行效率
- 透過sql trace比較常規 not in 、minus、not exists效率SQL
- 探討 T-SQL 的 EXISTS、EXCEPT、INTERSECT 算符SQL
- 通過sql trace比較常規 not in 、minus、not exists效率SQL
- sql的 exists 的用法例項--至少語法不錯SQL
- LINQ系列:LINQ to SQL Exists/In/Any/All/ContainsSQLAI
- oracle sql tuning_in與exists的區別_轉摘OracleSQL
- oracle中關於in和exists,not in 和 not existsOracle
- 【開發篇sql】 條件和表示式(六) Exists, not exsists,in ,not inSQL
- oracle中的exists 和not exists 用法詳解Oracle
- In和exists使用及效能分析(二):exists的使用
- exists和not exists及in和not in的用法與區別
- oracle中的exists和not exists和in用法詳解Oracle
- 理解exists count
- oracle exists and not existOracle
- In和exists使用及效能分析(三):in和exists的效能分析
- MySQL之in與existsMySql
- in 和 exists區別
- oracle 用EXISTS替代INOracle
- IN&EXISTS與NOT IN&NOT EXISTS 的優化原則的討論優化
- in,exists和not exists ,not in與null的一些關係記載Null
- elasticsearch之exists查詢Elasticsearch
- oracle中的exists理解Oracle