Posted on 2017-11-23 13:40
朱杰兵 閱讀(495)
評(píng)論(0) 編輯 收藏
不嚴(yán)謹(jǐn)?shù)膶懛?,可能?huì)報(bào)錯(cuò):in (),這種情況不符合SQL的語(yǔ)法,導(dǎo)致程序報(bào)錯(cuò)。
如果簡(jiǎn)單只做非空判斷,這樣也有可能會(huì)有問題:本來in一個(gè)空列表,應(yīng)該是沒有數(shù)據(jù)才對(duì),卻變成了獲取全部數(shù)據(jù)!
所以一個(gè)比較周全的方法是:
1 2 3 4 5 6 7 8 9 10 11 12 13 | < select id= "findLastPoolTaskIdsForMo" resultMap= "poolTaskResult" >
SELECT MIN (p.pool_task_id) AS pool_task_id
FROM pool_task p
WHERE r_type != 2
<if test= "moCodeList != null and moCodeList.size>0" >
AND p.mo_code IN
<foreach collection= "moCodeList" item= "item" index = "index" open = "(" close = ")" separator= "," >
#{item}
</foreach>
</if>
<if test= "moCodeList==null or moCodeList.size==0" > and 1=0</if>
GROUP BY p.mo_code
</ select >
|
如上,加2個(gè)if判斷,如果為空則永遠(yuǎn)讓語(yǔ)句查詢不到數(shù)據(jù)