先查询城市ID,城市没有再查询省份,SQL语句怎么写 5
先查询城市ID,城市没有再查询省份,SQL语句怎么写CREATETABLE`address`(`id`int(10)unsignedNOTNULLAUTO_INCREME...
先查询城市ID,城市没有再查询省份,SQL语句怎么写
CREATE TABLE `address` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`name` char(50) DEFAULT '' COMMENT '通道名称',
`province` int(10) unsigned DEFAULT '0' COMMENT '省份',
`city` int(10) unsigned DEFAULT '0' COMMENT '城市',
PRIMARY KEY (`id`) USING BTREE
) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=utf8;
INSERT INTO `address`(`id`, `name`, `province`, `city`) VALUES
(1, '11', 110000, 110100),
(2, '22', 110000, 110101),
(3, '33', 110000, 110102),
(4, '33', 110000, 110102),
(5, '44', 110000, 110100),
(6, '55', 120000, 120100);
需求:
城市ID、省份ID均已知,例如:需要查询 城市 110102的数据,如果城市数据没有的话就匹配所在省份 110000,
但是如果城市数据存在的时候,返回数据为精准条数,如果城市数据不存在,就返回省份的模糊结果
例如:
SELECT * FROM address WHERE city = 110102
如果 110102 存在就返回2条,如果110102不存在,就返回110000的数据5条。 展开
CREATE TABLE `address` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`name` char(50) DEFAULT '' COMMENT '通道名称',
`province` int(10) unsigned DEFAULT '0' COMMENT '省份',
`city` int(10) unsigned DEFAULT '0' COMMENT '城市',
PRIMARY KEY (`id`) USING BTREE
) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=utf8;
INSERT INTO `address`(`id`, `name`, `province`, `city`) VALUES
(1, '11', 110000, 110100),
(2, '22', 110000, 110101),
(3, '33', 110000, 110102),
(4, '33', 110000, 110102),
(5, '44', 110000, 110100),
(6, '55', 120000, 120100);
需求:
城市ID、省份ID均已知,例如:需要查询 城市 110102的数据,如果城市数据没有的话就匹配所在省份 110000,
但是如果城市数据存在的时候,返回数据为精准条数,如果城市数据不存在,就返回省份的模糊结果
例如:
SELECT * FROM address WHERE city = 110102
如果 110102 存在就返回2条,如果110102不存在,就返回110000的数据5条。 展开
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询