SQL在業(yè)務(wù)中使用if存在的問(wèn)題是什么,很多新手對(duì)此不是很清楚,為了幫助大家解決這個(gè)難題,下面小編將為大家詳細(xì)講解,有這方面需求的人可以來(lái)學(xué)習(xí)下,希望你能有所收獲。
創(chuàng)新互聯(lián)堅(jiān)持“要么做到,要么別承諾”的工作理念,服務(wù)領(lǐng)域包括:網(wǎng)站設(shè)計(jì)、成都網(wǎng)站制作、企業(yè)官網(wǎng)、英文網(wǎng)站、手機(jī)端網(wǎng)站、網(wǎng)站推廣等服務(wù),滿足客戶于互聯(lián)網(wǎng)時(shí)代的武鄉(xiāng)網(wǎng)站設(shè)計(jì)、移動(dòng)媒體設(shè)計(jì)的需求,幫助企業(yè)找到有效的互聯(lián)網(wǎng)解決方案。努力成為您成熟可靠的網(wǎng)絡(luò)建設(shè)合作伙伴!
if(true,'1','0')
在sql中 if 是非此即彼的選擇,因此使用時(shí)需要注意業(yè)務(wù)問(wèn)題:
舉例:
判斷用戶是否新注冊(cè)或者老注冊(cè)用戶
select
tb.*
,if(t_user.user_id is not null,'新注冊(cè)用戶','老注冊(cè)用戶') as new_sign_user
from tb
left join t_user ## 用戶id是唯一性的
on tb.ds = t_user.ds
and tb.user_id = t_user.user_id
在新老注冊(cè)用戶是沒(méi)有任何問(wèn)題,因?yàn)橛脩糁挥袃煞N屬性,要么是新注冊(cè),要么是老注冊(cè),用if沒(méi)有問(wèn)題;
select
tb.*
,case when t_first_pay.from_user_id is not null and t_first_pay.ds < tb.ds then '老付費(fèi)'
when t_first_pay.from_user_id is not null and t_first_pay.ds = tb.ds then '新付費(fèi)'
else '未付費(fèi)' end as new_pay_user
from tb
left join t_trade_flow_first_type as t_first_pay ## 用戶首次付費(fèi)
on tb.ds = t_first_pay.ds
and tb.user_id =t_first_pay.user_id
付費(fèi)用戶有三種屬性,老付費(fèi)屬性、新付費(fèi)屬性、未付費(fèi),因此不能再使用了if 判定,需要使用case when 進(jìn)行多重判定;
if 使用最好,但是也需要注意業(yè)務(wù)場(chǎng)景,窮盡業(yè)務(wù)可能性;
看完上述內(nèi)容是否對(duì)您有幫助呢?如果還想對(duì)相關(guān)知識(shí)有進(jìn)一步的了解或閱讀更多相關(guān)文章,請(qǐng)關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,感謝您對(duì)創(chuàng)新互聯(lián)的支持。