北京 | 上海 | 天津 | 重庆 | 广州 | 深圳 | 珠海 | 汕头 | 佛山 | 中山 | 东莞 | 南京 | 苏州 | 无锡 | 常州 | 南通 | 扬州 | 徐州 | 杭州 | 温州 | 宁波 | 台州 | 福州 | 厦门 | 泉州 | 龙岩 | 合肥 | 芜湖 | 成都 | 遂宁 | 长沙 | 株洲 | 湘潭 | 武汉 | 南昌 | 济南 | 青岛 | 烟台 | 潍坊 | 淄博 | 济宁 | 太原 | 郑州 | 石家庄 | 保定 | 唐山 | 西安 | 大连 | 沈阳 | 长春 | 昆明 | 兰州 | 哈尔滨 | 佳木斯 | 南宁 | 桂林 | 海口 | 贵阳 | 西宁 | 乌鲁木齐 | 包头 |
你的问题已经结贴,但我仔细考虑了一下。查询还可以写的更简洁一些:
SELECT a.*, b.合约价格
FROM 业务表 AS a INNER JOIN 合约表 AS b ON (a.合约号=b.约号) AND (instr(b.代码,left(a.业务代码,2))>0);
也就是说,只要满足业务代码的前两位包含在合约表的代码中就可以了。不必用OR语句做多余判断。
原帖答复为:
SELECT a.*, b.合约价格
FROM 业务表 AS a INNER JOIN 合约表 AS b ON (a.合约号=b.约号) AND ((instr(b.代码,a.业务代码)>0) OR (instr(b.代码,left(a.业务代码,2))>0));
其中(instr(b.代码,a.业务代码)>0)在逻辑上冗余。
原帖:http://www.accessoft.com/bbs/showtopic.asp?id=23839
对此问题的详细论述:http://www.accessoft.com/blog/article-show.asp?userid=10802&Id=10118