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} )