同一张地区表中根据汉字查询地区的代码

表结构

 1 CREATE TABLE `t_sys_city` (
 2   `id` varchar(64) NOT NULL COMMENT '标示',
 3   `city_name` varchar(64) DEFAULT NULL COMMENT '城市名称',
 4   `parent_id` varchar(64) DEFAULT NULL COMMENT '父id',
 5   `city_level` int(11) DEFAULT NULL COMMENT '级数',
 6   `initial` varchar(16) DEFAULT NULL COMMENT '首字母',
 7   `alphabet` varchar(64) DEFAULT NULL COMMENT '全拼',
 8   `area_code` varchar(16) DEFAULT NULL COMMENT '区号',
 9   `state` char(1) DEFAULT '0' COMMENT '表状态(0:正常;1:作废)',
10   `create_name` varchar(32) DEFAULT NULL COMMENT '创建人',
11   `create_time` varchar(32) DEFAULT NULL COMMENT '创建时间',
12   PRIMARY KEY (`id`),
13   KEY `parent_id` (`parent_id`) USING BTREE,
14   KEY `state` (`state`) USING BTREE
15 ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 ROW_FORMAT=DYNAMIC;
-- 右外连接
SELECT
  p.id provinceId,
  c.id cityId,
  a.id areaId
FROM
  t_sys_city p
  RIGHT JOIN t_sys_city c
    ON p.id = c.parent_id
  RIGHT JOIN t_sys_city a
    ON c.id = a.parent_id
WHERE p.city_name LIKE '山东%'
  AND c.city_name LIKE '济南%'
  AND a.city_name LIKE '历下%';

-- 内连接
SELECT
  p.id provinceId,
  c.id cityId,
  a.id areaId
FROM
  t_sys_city p,
  t_sys_city c,
  t_sys_city a
WHERE p.id = c.parent_id
  AND c.id = a.parent_id
  AND p.city_name LIKE '山东%'
  AND c.city_name LIKE '聊城%'
  AND a.city_name LIKE '冠县%';

猜你喜欢

转载自www.cnblogs.com/wgbs25673578/p/10253516.html
今日推荐