最近为一个老系统新增功能模块时,程序中有段代码使用到多表查询,多表联合时我使用了left join和表别名,程序在我本机上运行没有问题,结果发布到银行测试机时,运行此段代码时提示:
The Column prefix …… does not match with a table name or alias name used in the query……
询问银行的人得知,这台机器的Sybase数据库是10年前装的,版本很老,而我本机的Sybase版本是12.5,难道早期版本不知道表别名?
我把查询语句中的表别名通通去掉,发现还是同样的报错信息。
后来把left join去掉,此时运行正常,再加上表别名,依然正常,此时可确认是left join的问题!改用 *=实现多表查询,程序没有问题。
所以如果使用的Sybase数据库是很老的版本,应慎用left join(不清楚具体从哪个版本开始支持此语法),如果确实需要实现left join的效果,可用 *= 代替。