1.find_in_set、replace函式獲取某個結點在某個結點下的級別以及case/when/then/end的使用:
select u.userid,u.repid,u.parentid,u.usertype,u.firstname,u.lastname,u.city,u.state,
find_in_set('-',replace(replace(parentid,'101-102-103-104-',''),'-',',-')) downlevel,
case when c.status=0 then 'active' when c.status=2 then 'locked' when c.status=3 then 'vacated' when c.status=4 then 'vacating' end status ,
l.levelname rank,c.personalcv totalcv
from commission c
left outer join user u on u.userid = c.distributorid
left outer join level l on c.levelid = l.levelid
where c.year= 2008 and month = 3 and ( u.parentid like '101-102-103-104-%' or u.parentid like '%-101-102-103-104-%' )
order by downlevel
注:(1)如果parentid等於『101-102-103-104-105-106-』,那麼此結點相對於104結點來說,downlevel的值是3。
(2)注意case/when/then/end的使用。
2.if函式的使用
select o.ordernumberfordisplay,if(o.state is null or o.state = '',u.state,o.state) state,
if(o.city is null or o.city = '',u.city,o.city) city,
if(o.county is null or o.county = '',u.county,o.county) county,o.tax,o.paidtime
from orders o,user u
where o.paidtime between '2008-09-03 0:00:00' and '2050-01-02 0:00:00' and u.state = 'ak' and o.status in ( 20,21,40,41,50 ) and u.userid = o.shipto
注:使用if語句,不僅可以判斷is null,還能夠判斷為空的情況。
3.sum和ifnull函式的使用
select levelid,
triplediamondexecutive,
sum(ifnull(retailcommission, 0))+sum(ifnull(overridecommission,0))+sum(ifnull(adjustedcommission, 0)) as commissionspaid
from commission
where (year*100+month) > '$p!' and (year*100+month) < '$p!'
group by commissioned
其實,在使用sql函式時,我們可以到mysql使用者手冊中查,這不需要多長時間。
SQL裡變數的宣告以及常用函式舉例
知識點 宣告變數 declare關鍵字 迴圈語句 while.begin end 資料型別轉換 cast 函式 應用舉例 初始化指令碼 create table dbo test id int identity 1,1 not null,tid int null,discription nvarch...
幾個常用的SQL
一 刪列 alter table 表名 drop column column b hana中 alter table 表名 drop 欄位名 二 增列 alter table 表名 add 列名 varchar 20 hana中 alter table schema1 table1 add crea...
matlab collect 函式使用舉例
在matlab中,使用collect函式來合併同類項,其使用格式如下 collect s,v 命令用於將符號矩陣s中所有同類項合併,並以v為符號變數輸出 collect s 命令使用findsym函式規定的預設變數代替上式中的v 應用例項 syms x y collect x 2 y y x x 2...