CREATE TABLE `hnsem_area` (
`ID` int(11) NOT NULL auto_increment,
`NAME` varchar(64) NOT NULL default 'name' COMMENT '地区名',
`PARENT_ID` int(11) NOT NULL default '0',
PRIMARY KEY (`ID`),
KEY `自身关联` (`PARENT_ID`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 ROW_FORMAT=REDUNDANT COMMENT='地区表';我想在这个表中查询每一级的记录 我改怎么做?
`ID` int(11) NOT NULL auto_increment,
`NAME` varchar(64) NOT NULL default 'name' COMMENT '地区名',
`PARENT_ID` int(11) NOT NULL default '0',
PRIMARY KEY (`ID`),
KEY `自身关联` (`PARENT_ID`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 ROW_FORMAT=REDUNDANT COMMENT='地区表';我想在这个表中查询每一级的记录 我改怎么做?
`ID` int(11) NOT NULL auto_increment,
`NAME` varchar(64) NOT NULL default 'name' COMMENT '地区名',
`PARENT_ID` int(11) NOT NULL default '0',
PRIMARY KEY (`ID`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 ROW_FORMAT=REDUNDANT COMMENT='地区表';然后用业务流来走自身关联,一般情况下是存储过程,也可以用程序来实现。
不过,自身的连接查询应该用改名规则 如
select name from hnsem_area as a ,hnsem_area as b where a.id=b.parent_id;
你的SQL语句绝对出不来,不想你想象的那么简单,那样的话,得根据实际业务用临时表来实现。
但是,如果层级固定还好说,一旦不固定,一句sql是绝对实现不了的。
select ID ,NAME,PARENT_ID from hnsem_area where PARENT_ID in (select ID from hnsem_area group by ID)