您当前的位置: 首页 > 学无止境 > 心得笔记 网站首页心得笔记
mysql高级查询语法-case when
发布时间:2019-05-21 21:53:51编辑:雪饮阅读()
昨天我在工作期间帮同事处理了一个关于case when的一个mysql查询语法问题,现在这里整理下,以备后期自己查阅。虽然使用场景并不多见。
需求:
一个消费表,一个会员表,一个散客表。消费表中通过一个类型字段关联散客表和会员表,因类型值不同则决定联表查询时是要和会员表关联还是散客表关联。但查询结果中无论是散客姓名还是会员姓名,都统一别名为name,且查询条件中当关联为会员表时就是模糊查询会员名称,当关联为散客表则模糊查询条件为散客名称。
实现如下:
SELECT
ca.create_time,
ca.id,
ca.allmoney,
ca.type,
ca.ispay,
pe.truename,
ca.paytype,
ca.content,
CASE ca.ctype
WHEN 1 THEN
cu. NAME
WHEN 0 THEN
cus. NAME
END AS NAME,
CASE ca.ctype
WHEN 1 THEN
cu.sex
WHEN 0 THEN
cus.sex
END AS sex,
CASE ca.ctype
WHEN 1 THEN
cu.idnumber
WHEN 0 THEN
cus.idnumber
END AS idnumber,
CASE ca.ctype
WHEN 1 THEN
cu.tel
WHEN 0 THEN
cus.tel
END AS tel
FROM
xm_cashier ca
LEFT JOIN xm_personnel pe ON pe.perid = ca.pid
LEFT JOIN xm_customer cu ON ca.cid = cu.cid
LEFT JOIN xm_customer_scattered cus ON ca.cid = cus.cid
WHERE
ca.mid = 5
AND ca.topdid = 2
AND ca.ispay = 0
AND (ca.delete_time IS NULL)
AND
CASE ca.type
WHEN 1 THEN
cu.NAME LIKE '%泡泡%'
WHEN 0 THEN
cus.NAME LIKE '%泡泡%'
END
关键字词:mysql,case,when