一、
假设你有一个查询,需要根据 id
是否为 null
来动态生成 SQL 条件:
xml复制
<select id="getResources" resultType="Resource">SELECT * FROM resources<where><if test="id != null">and id <![CDATA[<>]]> #{id}</if></where>
</select>
生成的 SQL
假设 id
的值为 123
,生成的 SQL 将是:
sql复制
SELECT * FROM resources
WHERE id <> 123
如果 id
为 null
,则不会生成任何条件,生成的 SQL 将是:
sql复制
SELECT * FROM resources
从表 resources
中选择所有列(*
表示所有列),但只选择那些 id
字段不等于 123
的记录。
二、
查询解释
sql复制
SELECTIFNULL(MAX(IFNULL(ORDER_NO, 0)), 0)
FROMscm_web_classify_tab
WHEREDELETE_FLAG = 0AND TENANT_ID = #{tenantId}
-
IFNULL(ORDER_NO, 0)
:-
这个函数确保
ORDER_NO
如果为NULL
,则用0
替代。这样可以避免MAX
函数在处理NULL
值时的问题。
-
-
MAX(...)
:-
这个函数用于获取
ORDER_NO
的最大值。如果所有ORDER_NO
都是NULL
,MAX
函数会返回NULL
。
-
-
IFNULL(..., 0)
:-
这个函数确保如果
MAX
函数的结果是NULL
,则用0
替代。这样可以确保最终结果总是返回一个数字,而不是NULL
。
-