半连接反连接
半連接&反連接
1. 半連接
半連接返回左表中與右表至少匹配一次的數(shù)據(jù)行,通常體現(xiàn)為 EXISTS 或者 IN 子查詢。左表驅(qū)動(dòng)右表。只返回左表的數(shù)據(jù),右表作為篩選條件。
可以用 EXISTS、 IN 或者 =ANY
舉例:表t1和表t2做半連接,t1是驅(qū)動(dòng)表,t2是被驅(qū)動(dòng)表,半連接條件為t1.x=t2.y。
這里"t1.x semi= t2.y"的含義是只要在表t2中找到一條記錄滿足t1.x=t2.y,則馬上停止搜索表t2,并直接返回表T1中滿足條件t1.x=t2.y的記錄。表t2中滿足半連接條件t1.x=t2.y的記錄即使有多條,表t1中也只會(huì)返回第一條滿足條件的記錄。
所以半連接和普通的內(nèi)連接不同,半連接實(shí)際上會(huì)去重。
2. 反連接
反連接返回左表中與右表不匹配的數(shù)據(jù)行,通常體現(xiàn)為 NOT EXISTS 或者 NOT IN 子查詢。反連接的邏輯與半連接正好相反
可以用NOT EXISTS、NOT IN 或者 !=ALL 操作符
反連接只返回左表的數(shù)據(jù),右表負(fù)責(zé)條件判斷
半連接、反連接等價(jià)于首先通過(guò)左外連接獲取所有滿足條件的數(shù)據(jù),然后使用 WHERE 條件找出右表中存在/不存在的數(shù)據(jù),最后執(zhí)行 DISTINCT 操作去除重復(fù)值;效率低,不過(guò)大多數(shù)數(shù)據(jù)庫(kù)可以實(shí)現(xiàn)這兩者的等價(jià)轉(zhuǎn)換。
參考鏈接:
https://blog.csdn.net/horses/article/details/108152329
總結(jié)
- 上一篇: 驻马店看卵巢早衰最好的医院推荐
- 下一篇: 电信开户多少钱啊?