1. 程式人生 > >SQL中EXISTS的使用方法

SQL中EXISTS的使用方法

name if語句 至少 art sans height 是否 adding 不返回


EXISTS用於檢查子查詢是否至少會返回一行數據。該子查詢實際上並不返回不論什麽數據,而是返回值True或False
EXISTS 指定一個子查詢,檢測 行 的存在。

Exists 一般用於if語句。最好不要用於where語句



例表A:TableA 例表B:TableB
技術分享 技術分享

A表和B表。同樣名字且同樣性別的有:馬艷艷、鄧事文。如果我想把A表中的這兩個人刪除

delete from TableA

where exists
(
select a.*
from TableA a, TableB b
where a.aname = b.bname and a.asex = b.bsex

)

這樣的做法是錯誤的。這條語句的意思是:推斷AB兩個表是否有同樣名字的記錄。假設有,就把A表刪除,全部記錄刪除。而不是同樣名字的那些記錄。

所以,切記。Exists僅僅是推斷真假!並不能給select和delete提供篩選。

正確做法例如以下:

delete TableA

from TableA a inner join TableB b

on a.aname = b.bname and a.asex = b.bsex

-- 註意,不要用left join,由於用左連接,A表還是會所有列出,依舊會所有被刪除。


SQL中EXISTS的使用方法