exists 和 not exists用法
exists和not exists 用于檢查子查詢是否至少會返回一行數(shù)據(jù),該子查詢實際上并不返回任何數(shù)據(jù),而是返回值TRUE或FALSE。
只不過exists和not exists 正好相反
exists(sql 返回結(jié)果集,為真)
exists括號中sql語句有結(jié)果,才會繼續(xù)執(zhí)行where 條件,沒結(jié)果視為條件不成立
not exists(sql 不返回結(jié)果集,為真)
not exists括號中sql語句無結(jié)果,才會繼續(xù)執(zhí)行where 條件,有結(jié)果視為條件不成立
例如:
表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 * FROM A WHERE EXISTS(
SELECT 1 FROM B WHERE A.ID=B.AID
)
上述結(jié)果分析:原因可以按照如下分析
SELECT ID,NAME FROM A WHERE EXISTS (SELECT * FROM B WHERE B.AID=1)
—>SELECT * FROM B WHERE B.AID=1有值返回真所以有數(shù)據(jù)
SELECT ID,NAME FROM A WHERE EXISTS (SELECT * FROM B WHERE B.AID=2)
—>SELECT * FROM B WHERE B.AID=2有值返回真所以有數(shù)據(jù)
SELECT ID,NAME FROM A WHERE EXISTS (SELECT * FROM B WHERE B.AID=3)
—>SELECT * FROM B WHERE B.AID=3無值返回真所以沒有數(shù)據(jù)文章來源:http://www.zghlxwxcb.cn/news/detail-565628.html
2.NOT EXISTS 就是反過來
SQL> select id,name from a where not exists (select * from b where a.id=b.aid);文章來源地址http://www.zghlxwxcb.cn/news/detail-565628.html
ID NAME
3 A3
到了這里,關于SQL中exists和not exists的用法的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網(wǎng)!