首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VB >

送分100分:关于UNION的简单有关问题

2012-02-06 
送分100分:关于UNION的简单问题select *from (select 发票编号 from sdjl where 类型0or类型2) union (s

送分100分:关于UNION的简单问题
select * from (select 发票编号 from sdjl where 类型=0 or 类型=2) union (select 发票编号 from xiaohu )

运行正常。

加了一对括号之后(语句如下),提示“JOIN操作语法错误”,请大家帮忙分析一下,错在什么地方。

select * from ( (select 发票编号 from sdjl where 类型=0 or 类型=2) union (select 发票编号 from xiaohu ) )



[解决办法]
union语句不需要括号来分隔独立查询或表的结果,否则出错或结果不正确都是可能的...可以看出你要的结果是:
select * 
from (select 发票编号 from sdjl where 类型=0 or 类型=2 
union 
select 发票编号 from xiaohu )

而你的第一个所谓运行正常的语句,实际上并不是你理解的格式,可以理解为:
select * from (select 发票编号 from sdjl where 类型=0 or 类型=2) 
union 
select 发票编号 from xiaohu
所以可以运行

而多加了括号之后,下面的语法是错误的,不需要括号:
(select 发票编号 from sdjl where 类型=0 or 类型=2) 
union 
(select 发票编号 from xiaohu )



[解决办法]
VB是通过数据库引擎来连接数据库的,比如ACCESS是JET引擎,执行的是jet-sql规范,与ACCESS环境下的SQL语法是有区别的...所以我觉得,括号不要按自己的理解去加,否则存在出问题的可能性...
[解决办法]
虽然有SQL92,SQL99这类标准,但粗略看过,好像也没讲这么细.看来要支持多种数据库还是需要多做针对性的测试啊,哪怕是在这种细节上.
[解决办法]
为什么不加括号可以,加上括号就不可以。
------------------------
答案就是加上括号,union语法错误...

热点排行