SQL IF语句输出
SQL IF语句我们有时会用到用到这个通常是对某个属性进行判断操作,类似我们编程那种三元表达式一样,但有时候业务上不会让你去简简单单去判断操作,还会让你把结果返回过去,通过接口展示出去在前端,你写一个带有if的查询结果你会发现根你之前定义的viewModel对应的属性名字对不上,对不上肯定不会输出。所以大概说一下实际怎么用if语句。
IF 语句了解
IF(expr1,expr2,expr3)
举个栗子:
IF(id IS NULL,'ID为空','ID不为空')
有点像我们写代码那种三元式 expr1?expr1: expr2,判断一下第一个如果行第二个走起,否则就进入第三个(这个也算代码风格优化的一种,记得面试有一家的题类似要表现折一个),这个也是符合一走二,不符合走三。
java三元表达式
int c= a>b?1:0;
输出IF语句结果
我遇到的问题是,搜索出用户信息,其中用户电话(注册时填的)如果为空,则取用户办业务绑定的电话。
问题一,怎么把结果输出
语句好写,怎么用是一个,我最开始把他跟mybatis标签搞混了,这个东西,你要知道mybatis这个if标签只能校验你输入的参数,可以这样写。
SELECT
uvr.id,
uvr.user_id,
uvr.target_type,
uvr.target_id,
IF(ui.phone IS NULL,ui.credit_phone,ui.phone) phone,
uvr.create_time,
temp.`goods_name`,
temp.head_img_url
FROM
user_view_record
uvr
INNER JOIN goods temp ON uvr.target_id = temp.id
LEFT JOIN user_info ui ON uvr.user_id = ui.id
ORDER BY
create_time DESC
问题二,输出的结果对应的上model属性
然而你输出的是这么一个东西,看图:
你要对应model里面的属性的name,你这个东西name对应的是红框那个,肯定接收不了,怎么办呢,在后面加上对应model的属性名就好了可以返回对应的结果,类似这个: