还有,你的表B里面不应该有重复,id应该是它的主键。
对于满足上面条件的正常数据库,程序就非常简单。
对于表B里面有不存在的时候也返回数据,可以使用左连接实现,例如:
SELECT A.ID, CASE B.SHOW WHEN NULL THEN "大家好" ELSE B.SHOW END, SUBSTRING_INDEX(A.ARR,"#",2) FROM A LEFT JOIN B ON B.ID=SUBSTRING_INDEX(A.ARR,"#",1)
交换以下工资信息表中的m和f
这里主要练习一下两种条件方法,先是case when方法,
语法是CASE expressing WHEN condition THEN return
这里expressing 不是必须的,如果有,就是拿来和condition进行比较的,意即如果有expressing,默认将它和WHEN后面的条件进行=比较,如果真,返回THEN后面的结果。下面是有expressing和没有expressing的两种写法:
或者,我们可以用if方法
if的语法是IF(condition, value_if_true, value_if_false)
else不能直接级联,只能级联case,应该这么写1。如果各个when条件互斥的话
select
pre.enabled,pre.link,ad.link as adlink,
CASE
WHEN pre.link=='' THEN 0
WHEN pre.link!=ad.link THEN 1
WHEN pre.enabled==0 THEN 2
ELSE 3
END CASE
from
_ad_pre as pre
left join
_ad as ad
on ad.adid=pre.adid
2.如果各个条件之间有包含关系
select
pre.enabled,pre.link,ad.link as adlink,
CASE
WHEN pre.link=='' THEN 0
ELSE
CASE
WHEN pre.link!=ad.link THEN 1
ELSE
CASE
WHEN pre.enabled==0 THEN 2
ELSE 3
END CASE
END CASE
END CASE
from
_ad_pre as pre
left join
_ad as ad
on ad.adid=pre.adid
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)