<if test="dto.payType != null"> ( select DISTINCT(o.id) , o.status, o.pay_status, o.is_practice, o.order_no, o.shop_id, o.create_time, o.phone_number, o.member_name_code, o.sys_user_id, o.net_retail_amount , o.total_point, o.total_amount, o.total_retail_amount from po_order o left join po_order_pay pay on o.id = pay.po_order_id and pay.receipt_type != 2 AND pay.po_order_id IS NOT NULL AND pay.is_valid = 1 AND pay_type = #{dto.payType} LEFT JOIN po_payment_order paym on o.id = paym.po_order_id AND paym.po_order_id IS NOT NULL <if test="dto.payType == 1"> AND paym.settlement_type = 2 </if> <if test="dto.payType == 5"> AND paym.settlement_type = 1 </if> <if test="dto.payType != 1 and dto.payType != 5"> AND 1=2 </if> where pay.id is not null or paym.id is not null ) </if>
时间: 2024-02-15 13:28:39 浏览: 93
这是一段 SQL 查询语句,根据不同情况拼接了不同的条件。根据传入的参数 dto.payType 是否为 null 或者为 1 或者为 5,选择不同的查询方式。查询的表为 po_order,关联了 po_order_pay 和 po_payment_order 表,根据这些表中的字段进行联合查询,返回结果包括 o.id、o.status、o.pay_status、o.is_practice、o.order_no、o.shop_id、o.create_time、o.phone_number、o.member_name_code、o.sys_user_id、o.net_retail_amount、o.total_point、o.total_amount、o.total_retail_amount。
相关问题
<if test="dto.payType == 5"> AND paym.settlement_type = 1 </if> <if test="dto.payType != 1 and dto.payType != 5"> AND 1=2 </if> WHERE pay.id is not null or paym.id is not null
这段代码看起来是一个 SQL 查询语句的一部分,其中包括了两个 IF 判断语句。第一个 IF 判断语句的条件是 "dto.payType == 5",表示如果 dto 对象中的 payType 属性值等于 5,那么查询结果中的 paym.settlement_type 属性值必须等于 1。第二个 IF 判断语句的条件是 "dto.payType != 1 and dto.payType != 5",表示如果 dto 对象中的 payType 属性值既不等于 1 也不等于 5,那么查询结果中的所有条件都不成立,返回空结果。最后,WHERE 子句中的条件是 pay.id is not null or paym.id is not null,表示查询结果中 pay.id 或 paym.id 不为空的数据。
<select id="loadArticleList" resultMap="resultMap"> SELECT aa.* FROM `ap_article` aa LEFT JOIN ap_article_config aac ON aa.id = aac.article_id <where> and aac.is_delete != 1 and aac.is_down != 1 <!-- loadmore --> <if test="type != null and type == 1"> and aa.publish_time <![CDATA[<]]> #{dto.minBehotTime} </if> <if test="type != null and type == 2"> and aa.publish_time <![CDATA[>]]> #{dto.maxBehotTime} </if> <if test="dto.tag != '__all__'"> and aa.channel_id = #{dto.tag} </if> </where> order by aa.publish_time desc limit #{dto.size} </select>
这段代码是一个SQL查询语句,用于从数据库表`ap_article`中获取文章列表。根据查询条件进行筛选和排序,最后返回指定数量的结果。
查询条件包括:
1. `aac.is_delete != 1`:排除已删除的文章。
2. `aac.is_down != 1`:排除已下架的文章。
3. `<if>`语句块中的条件根据`type`的值来决定加载更多的方式:
- 如果`type`为1,加载比`dto.minBehotTime`更早发布的文章。
- 如果`type`为2,加载比`dto.maxBehotTime`更晚发布的文章。
4. `<if>`语句块中的条件根据`dto.tag`的值来筛选特定标签的文章,如果`dto.tag`不等于'__all__',则只选择对应标签的文章。
查询结果按照发布时间(`aa.publish_time`)倒序排序,并限制返回结果数量为`dto.size`。
请注意,这段代码是从一个SQL语句中提取出来的,可能还需要在其他地方进行使用和处理。
阅读全文