謂詞
- 是一種特殊函數(shù),返回布爾值true/false/
- 分為全稱量詞和存在量詞
- 全稱量詞:所有x都滿足條件P
- 存在量詞:存在一個極其以上x滿足條件P
- SQL一般不存在全稱量詞,而是用“不存在滿足條件P的x”來表示
用法1:查詢表中“不”存在的數(shù)據(jù)
適用情況:找出表中不存在的項目
案例:找出各會議未參會的人員
知識點:先把所有可能性找出來甥雕,然后用not exists排除某條件,not exists 可以相當(dāng)于except
用法2:全稱量化
適用情況:找出表中所有不滿足某條件的項
案例1:找出沒有一個科目分數(shù)不滿50分的學(xué)生
知識點:同樣挥吵,先把所有可能性找出來裤唠,然后用not exists排除某條件,not exists 可以相當(dāng)于except
案例2:找出所有數(shù)學(xué)在80分泥张,語文在50分以上的學(xué)生
案例3:找出完成工序1的工程呵恢,后面的工程就算完成也不屬于符合這類條件
方法1:groupby 分組后聚合,having篩選得到滿足條件的工程
方法2:雙重否定媚创,not exists 是第一層否定渗钉,status<>限定條件構(gòu)成第二重否定,雙重否定表肯定,即是得到等于限定條件的數(shù)據(jù)
用法3:對列進行量化
適用情況:行可以增減鳄橘,但列刪減會有影響
案例1:查詢”都是1“的行
知識點:any/all等比較謂詞用法声离,比所有都大或小
案例2:查詢”存在9“的行
知識點:用in表示或的關(guān)系,即存在1個及其以上相應(yīng)值
案例3:查詢”均為null“的行
知識點:由于null不是數(shù)值瘫怜,要先coalesce所有列后再用is null限定條件