通过一张表查询完整的省市区信息

表结构

DROP TABLE IF EXISTS `area`;
CREATE TABLE `area`  (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `pid` int(11) UNSIGNED NOT NULL,
  `name` varchar(500) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL,
  `visible` tinyint(4) UNSIGNED NOT NULL,
  `displayorder` int(11) UNSIGNED NOT NULL,
  `level` tinyint(3) UNSIGNED NOT NULL,
  PRIMARY KEY (`id`) USING BTREE,
  INDEX `parentId`(`pid`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 990101 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Compact;

-- ----------------------------
-- Records of area
-- ----------------------------
INSERT INTO `area` VALUES (110000, 0, '北京市', 2, 0, 1);
INSERT INTO `area` VALUES (110100, 110000, '北京市', 2, 0, 2);
INSERT INTO `area` VALUES (110101, 110100, '东城区', 2, 0, 3);
INSERT INTO `area` VALUES (110102, 110100, '西城区', 2, 0, 3);
INSERT INTO `area` VALUES (110103, 110100, '崇文区', 2, 0, 3);
INSERT INTO `area` VALUES (110104, 110100, '宣武区', 2, 0, 3);
INSERT INTO `area` VALUES (110105, 110100, '朝阳区', 2, 0, 3);
INSERT INTO `area` VALUES (110106, 110100, '丰台区', 2, 0, 3);
INSERT INTO `area` VALUES (110107, 110100, '石景山区', 2, 0, 3);
INSERT INTO `area` VALUES (110108, 110100, '海淀区', 2, 0, 3);
INSERT INTO `area` VALUES (110109, 110100, '门头沟区', 2, 0, 3);

sql语句

SELECT c.name province,b.name city,a.name area FROM `area` `a` INNER JOIN `area` `b` ON `a`.`pid`=`b`.`id` INNER JOIN `area` `c` ON `b`.`pid`=`c`.`id` 

效果

同一张表sql省市区三级联动查询_ci