MySQL 查询城市下属地区:广东省/深圳市示例

表结构:

CREATE TABLE `zc_system_city` (
  `id` int(11) NOT NULL,
  `city_id` int(11) NOT NULL DEFAULT '0' COMMENT '城市id',
  `level` int(11) NOT NULL DEFAULT '0' COMMENT '省市级别',
  `parent_id` int(11) NOT NULL DEFAULT '0' COMMENT '父级id',
  `area_code` varchar(30) NOT NULL DEFAULT '' COMMENT '区号',
  `name` varchar(100) NOT NULL DEFAULT '' COMMENT '名称',
  `merger_name` varchar(255) NOT NULL DEFAULT '' COMMENT '合并名称',
  `lng` varchar(50) NOT NULL DEFAULT '' COMMENT '经度',
  `lat` varchar(50) NOT NULL DEFAULT '' COMMENT '纬度',
  `is_show` tinyint(1) NOT NULL DEFAULT '1' COMMENT '是否展示',
  `create_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  `update_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
  PRIMARY KEY (`id`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8 ROW_FORMAT=DYNAMIC COMMENT='城市表';

需求:

假如传入广东省,需要查询广东省下所有的区; 假如传入深圳市,需要查询深圳市下所有的区。

解决方案:

可以通过以下SQL语句来实现:

1. 查询广东省下所有区

SELECT * FROM `zc_system_city` WHERE `parent_id` = (SELECT `id` FROM `zc_system_city` WHERE `name` = '广东省') AND `level` = 3;

2. 查询深圳市下所有区

SELECT * FROM `zc_system_city` WHERE `parent_id` = (SELECT `id` FROM `zc_system_city` WHERE `name` = '深圳市') AND `level` = 4;

解释:

  • 两个SQL语句都使用了子查询来获取目标城市(广东省或深圳市)的ID。
  • 子查询 SELECT idFROMzc_system_cityWHEREname = '广东省' 用于获取“广东省”的ID。
  • 外层查询则根据获取的ID,并根据 level 字段来筛选出目标城市的区。
  • level 字段用于区分省、市、区等不同的行政级别。

总结:

以上示例展示了如何使用SQL语句查询特定城市下属的区,通过子查询获取城市ID,并根据ID和level筛选出目标地区的记录。您可以根据实际需求修改SQL语句中的参数和条件,以实现不同的查询功能。

MySQL 查询城市下属地区:广东省/深圳市示例

原文地址: https://www.cveoy.top/t/topic/nej7 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录