前言

上一節(jié)我們分析了INNER JOIN和IN,對(duì)于不同場景其性能是不一樣的,本節(jié)我們接著分析NOT EXISTS和NOT IN,簡短的內(nèi)容,深入的理解,Always to review the basics。

初步探討NOT EXISTS和NOT IN

NOT EXISTS和NOT IN有很大的不同,尤其是對(duì)NULL的處理,為何這樣說,當(dāng)子查詢中有NULL時(shí),此時(shí)NOT IN不會(huì)返回任何行,下面我們來看下簡單的示例。

萬碼學(xué)堂,電腦培訓(xùn),計(jì)算機(jī)培訓(xùn),Java培訓(xùn),JavaEE開發(fā)培訓(xùn),青島軟件培訓(xùn),軟件工程師培訓(xùn)

USE TSQL2012
GO

WITH table1 AS
(
    SELECT 1 AS value
    UNION ALL
    SELECT NULL AS nullcol1
),
table2 AS
(
    SELECT 2 AS value
    UNION ALL
    SELECT NULL AS nullcol2
)

萬碼學(xué)堂,電腦培訓(xùn),計(jì)算機(jī)培訓(xùn),Java培訓(xùn),JavaEE開發(fā)培訓(xùn),青島軟件培訓(xùn),軟件工程師培訓(xùn)

首先我們來通過NOT EXISTS來進(jìn)行查詢

SELECT * FROM table1 AS a 
WHERE NOT EXISTS(SELECT * FROM table2 AS b WHERE a.value = b.value)

萬碼學(xué)堂,電腦培訓(xùn),計(jì)算機(jī)培訓(xùn),Java培訓(xùn),JavaEE開發(fā)培訓(xùn),青島軟件培訓(xùn),軟件工程師培訓(xùn) 

接下來我們再來進(jìn)行NOT IN查詢

        		

網(wǎng)友評(píng)論