1

を使用UNION ALLして、複数のSELECTクエリの結果を1つにまとめていResultSetます。定数フィールド値を使用して、各行を生成したステートメントを識別します。これはMySQLでうまく機能しますが、Java DBはSQLSyntaxErrorException、最初の定数フィールド値の後のコンマを指して、をスローします。

JavaDBデータベースに対するクエリで定数フィールド値を選択するために使用される構文は何ですか?SELECT

最初のSELECT列にはさまざまなデータ型の最大100列があり、次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

これは次の例外をスローします:

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
4

3 に答える 3

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
于 2012-05-04T18:43:47.050 に答える
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 構文ではないため、列リストを囲む括弧も削除する必要があります。

于 2012-05-10T11:53:26.843 に答える
-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
于 2012-05-04T18:44:39.850 に答える