1. 程式人生 > >SQL 查詢並拼接欄位的兩種方法主要用於多級分類表格顯示(一級/二級/三級/)

SQL 查詢並拼接欄位的兩種方法主要用於多級分類表格顯示(一級/二級/三級/)

表A(id,name,typeid)

表B(typeid,parentid,tnam)

第一種:用CASE WHEN THEN判斷

SELECT CASE WHEN b.parentid IS NULL THEN b.tname WHEN b1.typeid IS NOT NULL THEN b1.tname+'/'+b.tyname ELSE b2.tname+'/'+b1.tname+'/'+b.tname END AS 分類

FROM A a

LEFT JOIN B b ON b.typeid=a.typeid   //獲取三級分類

LEfT JOIN B b1 ON b1.typeid=b.parentid  //獲取二級分類

LEFT JOIN B b2 ON b2.typeid=b1.parentid  //獲取一級分類

//結果 可能:三級分類、二級分類/三級分類、一級分類/二級分類/三級分類

第二種(類似第一種):用ISNULL判斷,相對第一種比較快

SELECT ISNULL(b2.tname+'/','')+ISNULL(b1.tname+'/','')+ISNULL(b.tname,'') AS 分類

FROM A a

LEFT JOIN B b ON b.typeid=a.typeid   //獲取三級分類

LEfT JOIN B b1 ON b1.typeid=b.parentid  //獲取二級分類

LEFT JOIN B b2 ON b2.typeid=b1.parentid  //獲取一級分類

//結果 可能:三級分類、二級分類/三級分類、一級分類/二級分類/三級分類

以上就是本人的小小經驗了