Sybase早期版本中使用left join
2011-03-11 14:56
113 查看
最近为一个老系统新增功能模块时,程序中有段代码使用到多表查询,多表联合时我使用了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的效果,可用 *= 代替。
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的效果,可用 *= 代替。
相关文章推荐
- VS2010 预编译头文件来自编译器的早期版本,或者预编译头为 C++ 而在 C 中使用它
- VS中c++文件调用c 函数 ,fatal error C1853 预编译头文件来自编译器的早期版本,或者预编译头为 C++ 而在 C 中使用它(或相反)
- Java 理论与实践: 在 JDK 早期版本中使用 Java 5 的语言特性
- 预编译头文件来自编译器的早期版本,或者预编译头为 C++ 而在 C 中使用它(或相反)
- C/C++混合编程出现:预编译头文件来自编译器的早期版本,或者预编译头为 C++ 而在 C 中使用它(或相反)问题的解决方案
- fatal error C1853 预编译头文件来自编译器的早期版本,或者预编译头为 C++ 而在 C 中使用它(或相反)
- error C1853: “Debug\BigBuffer.pch”预编译头文件来自编译器的早期版本,或者预编译头为 C++ 而在 C 中使用它(或相反)
- 预编译头文件来自编译器的早期版本,或者预编译头为 C++ 而在 C 中使用它(或相反)
- fatal error C1853 预编译头文件来自编译器的早期版本,或者预编译头为 C++ 而在 C 中使用它(或相反)
- 预编译头文件来自编译器的早期版本,或者预编译头为 C++ 而在 C 中使用它(或相反)
- 预编译头文件来自编译器的早期版本,或者预编译头为 C++ 而在 C 中使用它(或相反)
- 在 JDK 早期版本中使用 Java 5 的语言
- fatal error C1853 预编译头文件来自编译器的早期版本,或者预编译头为 C++ 而在 C 中使用它(或相反)
- 预编译头文件来自编译器的早期版本,或者预编译头为 C++ 而在 C 中使用它(或相反)
- 预编译头文件来自编译器的早期版本,或者预编译头尾C++而在Czhong使用它(或相反)
- VS2005 MFC 预编译头文件来自编译器的早期版本,或者预编译头为 C++ 而在 C 中使用它(或相反)
- 预编译头文件来自编译器的早期版本,或者预编译头为 C++ 而在 C 中使用它(或相反)
- VS2010 预编译头文件来自编译器的早期版本,或者预编译头为 C++ 而在 C 中使用它
- 【转】预编译头文件来自编译器的早期版本,或者预编译头为 C++ 而在 C 中使用它(或相反)
- 预编译头文件来自编译器的早期版本,或者预编译头为 C++ 而在 C 中使用它(或相反)