derby データベースのみで 10 件のレコードを取得したいと考えています。私はそれを行うためのチュートリアルを探しています:
select * from (select ROW_NUMBER() OVER() AS rownum,name,effort from (select name, effort from
(select TBL_PROJECT_DETAIL.P_NAME as Name, sum(TBL_TIMESHEET.EFFORT) as effort from
TBL_TIMESHEET join tbl_project_detail on TBL_TIMESHEET.PROJECT_ID = TBL_PROJECT_DETAIL.ID group by TBL_PROJECT_DETAIL.P_NAME) as New)
as new2)
as new3
where rownum <= 10
最後にwhere を使用して最初にデータを 10 に制限できますが、問題は、節rownum <= 10
を使用してデータが順序付けられていないため、10 個のランダムなデータを取得したことです。order by
order by
データが与える前に置くとrownum
:
select * from (select ROW_NUMBER() OVER() AS rownum,name,effort from
(select name, effort from
(select TBL_PROJECT_DETAIL.P_NAME as Name, sum(TBL_TIMESHEET.EFFORT) as effort from
TBL_TIMESHEET join tbl_project_detail on TBL_TIMESHEET.PROJECT_ID = TBL_PROJECT_DETAIL.ID group by TBL_PROJECT_DETAIL.P_NAME)
as New)
as new2 order by effot desc)
as new3 where rownum <=10
エラーが発生しました。group by
結果を再度クエリの内部テーブルに入れると、そのようなことはできませんが、derby の要件は、row_number を使用することです。最初に内部にrow_numberを追加し、それを次のレイヤーのwhereで使用します。誰でも助けることができますか?Derby はサポート制限ではありません。最初に 10 件のレコードを注文する他の方法はありますか?