我正在使用UNION ALL
将多个SELECT
个查询的结果合并为一个ResultSet
。我使用常量字段值来标识每行产生的语句。这适用于MySQL,但是Java DB正在抛出SQLSyntaxErrorException
,指向第一个常量字段值之后的逗号。
在针对JavaDB数据库的 SELECT
查询中,使用什么语法来选择常量字段值?
第一个SELECT
有大约100列具有不同数据类型的列,并且填充以下SELECT
以匹配正确的列数。我做到了here。目前的陈述如下:
select
(0, ID, NAME_FIRST, NAME_LAST)
from person
where ID=500
union all
select
(1, COMMTYPE_ID, NULL, NULL)
from person_commtype
where PERSON_ID=500
引发以下异常:
java.sql.SQLSyntaxErrorException: Syntax error: Encountered "," at line 2, column 7.
我也尝试过抛出值,并删除括号,如下所示:
select
(cast(0 as integer), ID, NAME_FIRST, NAME_LAST)
from person
where ID=500
select
0, ID, NAME_FIRST, NAME_LAST
from person
where ID=500
答案 0 :(得分:4)
从SELECT
子句中的字段列表中删除括号。
select
0, ID, NAME_FIRST, NAME_LAST
from person
where ID=500
union all
select
1, COMMTYPE_ID, NULL, NULL
from person_commtype
where PERSON_ID=500
答案 1 :(得分:2)
问题是Apache Derby不支持
select null from test
相反,您必须将null转换为正确的类型:
select cast(null as varchar(255)) from test
所以查询看起来像:
select
0, ID, NAME_FIRST, NAME_LAST
from person where ID=500
union all
select
1, COMMTYPE_ID,
cast(NULL as varchar(255)),
cast(NULL as varchar(255))
from person_commtype where PERSON_ID=500
您还必须删除列列表周围的括号,因为这不是标准的SQL语法。
答案 2 :(得分:-1)
尝试将您的数字用单引号括起来。
select
('0', ID, NAME_FIRST, NAME_LAST)
from person
where ID=500
union all
select
('1', COMMTYPE_ID, NULL, NULL)
from person_commtype
where PERSON_ID=500