今天遇到个奇怪的问题,下面是出现问题的sql语句(请无视语句性能):
SELECT a.meter_id,a.collect_dt,a.collect_num AS collect_num,c.collect_numz,c.collect_numf,c.collect_num,c.collect_xs,d.[user_id]
FROM B_collect_info_report as a
left join ( select meter_id,collect_numz,collect_numf,collect_num,collect_xs from B_collect_now ) as c on a.meter_id = c.meter_id
left join ( select meter_id,[user_id] from B_user_info ) as d on a.meter_id = d.meter_id
WHERE a.meter_id in (SELECT meter_id FROM B_collector_info WHERE meter_id in ( '203598','203599','203600' ) )
AND collect_dt>='2014-07-06 00:00:00' AND collect_dt<='2014-07-06 23:59:59'
这个语句在sqlserver2005management里面运行是没有问题的,但是在服务器上运行,tomcat会报无法绑定由多个部分组成的标识符a.meter_id,这我就觉得奇怪了,要是两个地方都报错还好理解,偏偏只有服务器报错。
网上找了一些关于“无法绑定由多个部分组成的标识符”的问题和解决,却都是在数据库里报的错。
关键是他们的出的错误我自己这里没找到。
根据看到的网页,出现“无法绑定由多个部分组成的标识符”的错误,大部分是因为漏写表名或者在子查询外使用子查询内定义的别名。
没找到办法,个人感觉和别名有很大关系,于是把别名都改回了原表名,问题到还真解决了,看来别名不能瞎用,得好好研究研究。
下面是查资料过程中看到的网站:http://bbs.csdn.net/topics/370063019 , http://www.2cto.com/database/201310/252746.html
哪位要是看明白我这是什么问题,还希望能留个言啊。