sql case when then 语法使用

1
2
3
4
5
6
7
8
9
10
11
12
13
14
select distinct
        isa.site_id as siteId,
        sb.site_name as siteName,
        isf.id as id,
        isad.type_id as typeId,
        ist.type_name as typeName,
        isf.create_user_id as commitUserId,
        isad.content_item_id as contentItemId,
        u.user_phone as commitTelephone,
        case
        when isad.content_item_id IS NOT NULL THEN isci.item_name
        when isad.content_item_id IS NULL THEN isad.other_item_name
        end as contentItemName
        from table

1.这是在查询返回字段赋不同的值时候的使用

 

复制代码
<where>
            <if test="payfor != null and payfor != ''">

                (case when d.type = 3
                then (a.supplier_name LIKE #{payfor}"%")
                when d.type = 2 or d.type = 5
                then d.customer_name LIKE #{payfor}"%" end)
            </if>
</where>
 
复制代码

2.在where子句中的使用(mybatis中)

 

 

复制代码
select c.*,
     (CASE t.is_like
     WHEN '1' THEN '1'
     ELSE '0'
     END) as isLike,
    (CASE o.`status`
    WHEN '1' THEN '1'
    ELSE '0'
    END) as isPay
        from  c
                  left JOIN t on c.course_id=t.course_id and t.user_id=#{userId}
                  left join o on c.course_id=o.course_id and o.user_id = #{userId
复制代码

3. 常规用法 ,left JOIN 之后 可能出现空值的情况  ,o是订单表 根据订单状态判断是否已支付

 

posted @   了悟  阅读(270)  评论(0编辑  收藏  举报
编辑推荐:
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
阅读排行:
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】
点击右上角即可分享
微信分享提示