2017-12-11 18 views
0

タイトルに示されているように、私のクエリから1行を選択する必要があります。 ROWNUMは、ROWNUM()の機能があるため、HSQLDBでは動作しません。さらに、接続URL設定とschema-hsqldb.sqlの両方でORAの方言を設定しても機能しません(そうしてはいけませんが、その理由は分かりません)。問合せはOracleで完全に機能しています。Oracle Dialectを使用してHSQLDBから1行だけを選択してください

提案がありますか?大変ありがとうございます!

+0

rownum()でクエリを実行するとどうなりますか?例えば。 'select * from my_table where rownum()= 1' – kfinity

+0

@kfinity助けてくれてありがとう! 'SQLSyntaxErrorException:ORA-00907:右括弧がない'エラー –

答えて

1

。私は次のカスタム方言リゾルバを追加しました。今すぐ動作します。

1

単純なROWNUMではなく、ROWNUM()を括弧なしで使用すると、エラーが発生します。 HSQLDBでの管理方法が不明です。

12cを使用しているので、ROWNUMの代わりにFETCH..FIRST..ONLYを使用できます。

select * from employees FETCH FIRST 1 ROWS ONLY; 

は、下のバージョンでは、あなたは、少なくとも1 UNIQUE KEY(必ずしも宣言制約はなく、ユニークな行を識別するために、カラムのセット)テーブルの上を持って、row_number()使用することができます。検索、泣いて、私は私の場合には(私はかなり複雑なSQLを持っている)、それは柱である思考THIS_とプレフィックスROWNUMを休止することを発見した自殺の思考の約3日後

select b.<columns> FROM 
(
    select t.*, row_number() OVER (ORDER BY <unique_key_column_s) rn from yourtable t 
) b WHERE b.rn = 1; 
+0

回答ありがとう!これで私を助けようとしている人がいるのを見てうれしいです:)しかし、 'ROWNUM'の問題は、アプリケーションの実行ではなく、テストで発生します。 'FETCH..FIRST..ONLY'も動作しません:' HsqlException:予期しないトークン:SELECT'。 id:c以外のユニークな列はありません –

関連する問題