先查询城市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条。
展开
 我来答
fuyh16
2019-09-24 · TA获得超过222个赞
知道小有建树答主
回答量:462
采纳率:82%
帮助的人:119万
展开全部
按照你的要求,城市id查询不到结果的时候,再用省份id查询数据。
这种需求,就不是用sql技巧可以减少工作量的了。先用城市id查数据,判断返回结果没有数据,再用省份id查数据。
你可以用后台java代码判断返回的rs是不是有记录,没有就换省份id再重新查。
或者写一个数据库的函数,再函数中先用城市id查,没有结果再换省份id查。
建议不用数据库方式,系统中,用数据库尽量只用来查询,有逻辑关系的运算尽量交给后台代码。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式