在mysql中,地址連級查詢是一種非常常見的需求,例如查詢某個省份下的所有城市或查詢某個城市下的所有區縣等。那么如何編寫mysql地址連級查詢呢?下面讓我們詳細了解一下。
-- 創建省份表 CREATE TABLE `province` ( `id` int NOT NULL AUTO_INCREMENT COMMENT '省份ID', `name` varchar(50) NOT NULL COMMENT '省份名稱', PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='省份表'; -- 創建城市表 CREATE TABLE `city` ( `id` int NOT NULL AUTO_INCREMENT COMMENT '城市ID', `name` varchar(50) NOT NULL COMMENT '城市名稱', `province_id` int NOT NULL COMMENT '所屬省份ID', PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='城市表'; -- 創建區縣表 CREATE TABLE `district` ( `id` int NOT NULL AUTO_INCREMENT COMMENT '區縣ID', `name` varchar(50) NOT NULL COMMENT '區縣名稱', `city_id` int NOT NULL COMMENT '所屬城市ID', PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='區縣表';
以上是創建省份、城市、區縣三張表的sql代碼。其中城市表和區縣表中分別添加了省份ID和城市ID兩個外鍵,用于實現地址的連級關系。
-- 查詢某個省份下的所有城市 SELECT city.* FROM city LEFT JOIN province ON city.province_id = province.id WHERE province.id = '1'; -- 查詢某個城市下的所有區縣 SELECT district.* FROM district LEFT JOIN city ON district.city_id = city.id WHERE city.id = '1';
以上是兩個最基本的地址連級查詢語句,其中第一個查詢語句可以查詢出ID為1的省份下的所有城市;第二個查詢語句可以查詢出ID為1的城市下的所有區縣。
需要注意的是,在實際中,地址的連級查詢往往會與頁面交互相關,例如在頁面中選擇某個省份后自動加載該省份下的所有城市,或選擇某個城市后自動加載該城市下的所有區縣等。這時候,我們通常可以用ajax來異步獲取數據,然后通過javascript動態渲染頁面。這一部分超出了本文范圍,不再贅述。