1.表設計以下sql
2.測試數據以下測試
3.需求設計
查詢某級別下面全部的子級別(假設級別最多隻有3級),例如,某級別的id=1000000000,查詢以下code
SELECT * FROM t_commodity_type tct WHERE tct.PARENT_TYPE_ID = 1000000000 UNION ALL SELECT * FROM t_commodity_type tct2 WHERE tct2.PARENT_TYPE_ID in (SELECT tct3.COMMODITY_TYPE_ID FROM t_commodity_type tct3 WHERE tct3.PARENT_TYPE_ID = 1000000000)
4.若是存在多級的話,一直union all下去it
5.針對業務改善如上表設計io
很明顯,一個現級id、一個父級id不能方便的查詢,還須要增長一個原級id。class
這樣,查詢某個級別下面全部子級的時候,就能夠掛上級別和原級id查詢,這樣方便些。nio
6.針對如上表的更新im
更新某個級別下面全部的use_flag,以下的sql假設該級別爲1
數據
UPDATE t_commodity_type tct SET tct.USE_FLAG = 0, tct.UPD_USER_ID = #{userId}, tct.UPD_TIME = #{updTime} WHERE ( tct.COMMODITY_TYPE_ID = #{commodityTypeId} AND tct.COMMODITY_LEVEL = 1 ) OR ( tct.PARENT_TYPE_ID = #{commodityTypeId} AND tct.COMMODITY_LEVEL = 2 ) OR tct.COMMODITY_TYPE_ID IN ( SELECT tct3.COMMODITY_TYPE_ID FROM t_commodity_type tct3 LEFT JOIN t_commodity_type tct2 ON tct3.PARENT_TYPE_ID = tct2.COMMODITY_TYPE_ID WHERE tct3.COMMODITY_LEVEL = 3 AND tct2.PARENT_TYPE_ID = #{commodityTypeId} )