需求
要按照当前登录用户去判断这条日常是自己分享的还是别人分享给自己的。
当日程为他人分享时,显示【分享人】share_by_id
当日程分享给他人是,显示【风险对象(分享来自谁)】 share_id
表结构
下乘写法:分两次查询
SELECT share_name FROM calendar_share WHERE id = ‘06ea766e2fca4faa80f522ac8b202453’ and share_by_id=‘3’
SELECT share_by_name FROM calendar_share WHERE id = ‘06ea766e2fca4faa80f522ac8b202453’ and share_id=‘3’
然后判断 share_name和 share_by_name 哪个不为空用哪个
上乘写法:一条sql
<select id="dataIsShareOther" resultType="string">
SELECT
CASE
WHEN
share_id = #{userId}
THEN
share_name
ELSE
share_by_name
END AS 'shareName'
FROM
calendar_share
WHERE
calendar_id = #{id},
is_shared ='0',
AND (share_id = #{userId} OR share_by_id = #{userId});
</select>
总结
CASE WHEN条件表达式函数:类似JAVA中的IF ELSE语句。