CREATE TABLE `TEST` (
`tb` VARCHAR(50) ,
`chan` INT ,
`chanone` INT ,
`chantwo` INT ,
`class` INT ,
`name` VARCHAR (100)
);
INSERT INTO TEST VALUES('13511' , 135, 1 , 1 , 1 , '中国');
INSERT INTO TEST VALUES('13522', 135 , 2 , 2 , 2 , '浙江');
INSERT INTO TEST VALUES('13523', 135 , 2 , 3 , 2 , '湖南');
INSERT INTO TEST VALUES('13542', 135 , 4 , 2 , 3 , '杭州');
INSERT INTO TEST VALUES('13543' , 135 , 4 , 3 , 3 , '长沙');
INSERT INTO TEST VALUES('13611', 136 , 1 , 1 , 1 , '美国');
INSERT INTO TEST VALUES('13622', 136 , 2 , 2, 2 , '加州1');
INSERT INTO TEST VALUES('13623', 136 , 2 , 3 , 2 , '加州2');
INSERT INTO TEST VALUES('13644', 136 , 4 , 4 , 3 , '老加');
INSERT INTO TEST VALUES('13645', 136 , 4 , 5 , 3 , '小加');
数据:
tb chan chanone chantwo class nm
13511 135 1 1 1 中国
13522 135 2 2 2 浙江
13523 135 2 3 2 湖南
13542 135 4 2 3 杭州
13543 135 4 3 3 长沙
13611 136 1 1 1 美国
13622 136 2 2 2 加州1
13623 136 2 3 2 加州2
13644 136 4 4 3 老加
13645 136 4 5 3 小加
根据同一chan下的class的级别来显示结果的,tb是唯一的,但是不是主键。tb是chan和chanone chantwo三个字段的结合。
class 1 中国
class 2 中国-湖南
class 3 中国-湖南-长沙要求显示的结果:
tb chan chanone chantwo class nm
13511 135 1 1 1 中国
13522 135 2 2 2 中国-浙江
13523 135 2 3 2 中国-湖南
13542 135 4 2 3 中国-浙江-杭州
13543 135 4 3 3 中国-湖南-长沙
13611 136 1 1 1 美国
13622 136 2 2 2 美国-加州1
13623 136 2 3 2 美国-加州2
13642 136 4 2 3 美国-加州1-老加
13643 136 4 3 3 美国-加州2-小加
`tb` VARCHAR(50) ,
`chan` INT ,
`chanone` INT ,
`chantwo` INT ,
`class` INT ,
`name` VARCHAR (100)
);
INSERT INTO TEST VALUES('13511' , 135, 1 , 1 , 1 , '中国');
INSERT INTO TEST VALUES('13522', 135 , 2 , 2 , 2 , '浙江');
INSERT INTO TEST VALUES('13523', 135 , 2 , 3 , 2 , '湖南');
INSERT INTO TEST VALUES('13542', 135 , 4 , 2 , 3 , '杭州');
INSERT INTO TEST VALUES('13543' , 135 , 4 , 3 , 3 , '长沙');
INSERT INTO TEST VALUES('13611', 136 , 1 , 1 , 1 , '美国');
INSERT INTO TEST VALUES('13622', 136 , 2 , 2, 2 , '加州1');
INSERT INTO TEST VALUES('13623', 136 , 2 , 3 , 2 , '加州2');
INSERT INTO TEST VALUES('13644', 136 , 4 , 4 , 3 , '老加');
INSERT INTO TEST VALUES('13645', 136 , 4 , 5 , 3 , '小加');
数据:
tb chan chanone chantwo class nm
13511 135 1 1 1 中国
13522 135 2 2 2 浙江
13523 135 2 3 2 湖南
13542 135 4 2 3 杭州
13543 135 4 3 3 长沙
13611 136 1 1 1 美国
13622 136 2 2 2 加州1
13623 136 2 3 2 加州2
13644 136 4 4 3 老加
13645 136 4 5 3 小加
根据同一chan下的class的级别来显示结果的,tb是唯一的,但是不是主键。tb是chan和chanone chantwo三个字段的结合。
class 1 中国
class 2 中国-湖南
class 3 中国-湖南-长沙要求显示的结果:
tb chan chanone chantwo class nm
13511 135 1 1 1 中国
13522 135 2 2 2 中国-浙江
13523 135 2 3 2 中国-湖南
13542 135 4 2 3 中国-浙江-杭州
13543 135 4 3 3 中国-湖南-长沙
13611 136 1 1 1 美国
13622 136 2 2 2 美国-加州1
13623 136 2 3 2 美国-加州2
13642 136 4 2 3 美国-加州1-老加
13643 136 4 3 3 美国-加州2-小加
select chan,name from test group by chan)b
on a.chan=b.chan这是参照例子
多元化只需要多个归来即可。
case class
when 1 then name
when 2 then (select concat(name,'-',a.name) from test where chan=a.chan and class=1)
when 3 then (select concat(b.name,'-',c.name,'-',a.name) from test b,test c where b.chan=c.chan and b.class=1 and c.class=2 and c.chan=a.chan and c.chantwo=a.chantwo)
end as cname
from test a