2020-04-15

字段 in ()/字段 not in () 中的字段存在null值對(duì)查詢結(jié)果的影響

今天做項(xiàng)目寫sql的時(shí)候绷耍,因?yàn)榇嬖诮M織權(quán)限,需求是想查出組織表中組織id在權(quán)限管理的組織id集合下的澡为,但是父級(jí)的組織id不在管理的組織id下的組織,也就是查出某個(gè)人管理的組織中形成的組織樹的最上級(jí)景埃。因?yàn)樵械墓芾韱T管理的組織樹種媒至,最頂級(jí)的組織的parent_org_id是為null的,所以一開始的想法是這樣的

<if test="isAdminAuth == 'N'.toString()">

<choose>
<when test="orgIds != null and orgIds.size()>0">
and id in
<foreach collection="orgIds" item="item" index="index" open="(" separator="," close=")">
#{item}
</foreach>
and parent_org_id not in
<foreach collection="orgIds" item="item" index="index" open="(" separator="," close=")">
#{item}
</foreach>

 </when>
 <otherwise>
     and 1!=1
 </otherwise>
</choose>
</if>
 <if test="isAdminAuth == 'Y'.toString()">
      and parent_org_id is null or parent_org_id=''
 </if>

然后谷徙,查詢結(jié)果記錄一條都沒(méi)有拒啰,但是數(shù)據(jù)庫(kù)中的記錄明明有符合條件的
后面才發(fā)現(xiàn),對(duì)于查詢的字段使用in()/not in (),:

查詢的字段包含null的蒂胞,使用in/not in作為條件篩選图呢,不管('a','b','c',null) 中包不包含null,包含這個(gè)字段為null的記錄都不會(huì)被查出來(lái)骗随,也就是該字段為null的話蛤织,該記錄不參與這個(gè)條件的篩選

如果使用not in ( 'a','b','c',null),括號(hào)中包含null鸿染,這個(gè)條件會(huì)直接返回false

后面改為:

<if test="isAdminAuth == 'N'.toString()">

<choose>
<when test="orgIds != null and orgIds.size()>0">
and id in
<foreach collection="orgIds" item="item" index="index" open="(" separator="," close=")">
#{item}
</foreach>
and (parent_org_id not in
<foreach collection="orgIds" item="item" index="index" open="(" separator="," close=")">
#{item}
</foreach>
or parent_org_id is null ) //這里把為null的記錄單獨(dú)查出來(lái)
</when>
<otherwise>
and 1!=1
</otherwise>
</choose>
</if>
<if test="isAdminAuth == 'Y'.toString()">
and parent_org_id is null or parent_org_id=''
</if>
</if>
order by sort is null,sort asc

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末指蚜,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子涨椒,更是在濱河造成了極大的恐慌摊鸡,老刑警劉巖绽媒,帶你破解...
    沈念sama閱讀 219,366評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異免猾,居然都是意外死亡是辕,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,521評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門猎提,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)获三,“玉大人,你說(shuō)我怎么就攤上這事锨苏「斫蹋” “怎么了?”我有些...
    開封第一講書人閱讀 165,689評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵伞租,是天一觀的道長(zhǎng)贞谓。 經(jīng)常有香客問(wèn)我,道長(zhǎng)葵诈,這世上最難降的妖魔是什么裸弦? 我笑而不...
    開封第一講書人閱讀 58,925評(píng)論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮作喘,結(jié)果婚禮上烁兰,老公的妹妹穿的比我還像新娘。我一直安慰自己徊都,他們只是感情好沪斟,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,942評(píng)論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著暇矫,像睡著了一般主之。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上李根,一...
    開封第一講書人閱讀 51,727評(píng)論 1 305
  • 那天槽奕,我揣著相機(jī)與錄音,去河邊找鬼房轿。 笑死粤攒,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的囱持。 我是一名探鬼主播夯接,決...
    沈念sama閱讀 40,447評(píng)論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼纷妆!你這毒婦竟也來(lái)了盔几?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,349評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤掩幢,失蹤者是張志新(化名)和其女友劉穎逊拍,沒(méi)想到半個(gè)月后上鞠,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,820評(píng)論 1 317
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡芯丧,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,990評(píng)論 3 337
  • 正文 我和宋清朗相戀三年芍阎,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片缨恒。...
    茶點(diǎn)故事閱讀 40,127評(píng)論 1 351
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡能曾,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出肿轨,到底是詐尸還是另有隱情,我是刑警寧澤蕊程,帶...
    沈念sama閱讀 35,812評(píng)論 5 346
  • 正文 年R本政府宣布椒袍,位于F島的核電站,受9級(jí)特大地震影響藻茂,放射性物質(zhì)發(fā)生泄漏驹暑。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,471評(píng)論 3 331
  • 文/蒙蒙 一辨赐、第九天 我趴在偏房一處隱蔽的房頂上張望优俘。 院中可真熱鬧,春花似錦掀序、人聲如沸帆焕。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,017評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)叶雹。三九已至,卻和暖如春换吧,著一層夾襖步出監(jiān)牢的瞬間折晦,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,142評(píng)論 1 272
  • 我被黑心中介騙來(lái)泰國(guó)打工沾瓦, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留满着,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,388評(píng)論 3 373
  • 正文 我出身青樓贯莺,卻偏偏與公主長(zhǎng)得像风喇,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子缕探,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,066評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容