包含两个点:
1.根据name字段升序排序。(这里自动按照字符集编码的顺序)
2.<>的用法。这里是直接是不等于,不仅仅局限于数字的比较,还有字符串的比较。另外由于是xml文件要写成"<>"的形式。
<!-- 所有的楼层 -->
<select id="findBuildingAndFloorByDistrictAndGroup" resultType="xxxxxxx" parameterType="xxxxx">
SELECT * FROM ((SELECT
b.id,
b.id AS building_id,
b.building_name NAME,
b.merchant_district_id pId,
'building' AS type,
0 AS checked
FROM
xxx b
WHERE
b.del_stauts = 1
<if test="merchantDistrictId != null and merchantDistrictId.trim() != ''">
AND b.merchant_district_id = #{merchantDistrictId}
</if>
AND b.id NOT IN (
SELECT
g.building_id
FROM
xx g
LEFT JOIN x eig ON eig.id = g.group_id
WHERE
g.ref_type = 2
AND g.ref_status = 1
<if test="instrumentAttribute != null and instrumentAttribute != ''">
AND eig.instrument_attribute = #{instrumentAttribute}
</if>
<if test="groupId != null and groupId.trim() != ''">
AND g.group_id <> #{groupId}
</if>
)
)
UNION ALL
(SELECT
f.id,
f.building_id,
f.floor NAME,
f.building_id pId,
'floor' AS type,
0 AS checked
FROM
xxxx f
WHERE
f. STATUS = 1
AND f.building_id IS NOT NULL
<if test="merchantDistrictId != null and merchantDistrictId.trim() != ''">
AND f.merchant_district_id = #{merchantDistrictId}
</if>
AND f.id NOT IN (
SELECT
g.floor_id
FROM
xx g
LEFT JOIN x eig ON eig.id = g.group_id
WHERE
g.ref_type = 1
AND g.ref_status = 1
<if test="instrumentAttribute != null and instrumentAttribute != ''">
AND eig.instrument_attribute = #{instrumentAttribute}
</if>
<if test="groupId != null and groupId.trim() != ''">
AND g.group_id <> #{groupId}
</if>
)
)) t ORDER BY t.name ASC
</select>