0

さて、次の列を持つテーブルがあります

| id | release_id | publish_date | category | title |

この構造に基づいて、は複数のカテゴリreleaseを持つことができ、テーブルに新しい行が追加されます。私のページ ビューの 1 つに、最新の x リリース (すべてのカテゴリ) が一覧表示されます。次のようなクエリを実行すると:

select * 
from (select * 
      from TABLE 
      order by PUBLISH_DATE DESC) 
where rownum <= 10

最新のリリースの 1 つ (この場合は 10) に複数のカテゴリがある場合、2 回返されるため、UNIQUE または DISTINCT (またはその他の適切な方法) を追加して、返される行の RELEASE_ID が異なるようにします。

select を実行するDISTINCT RELEASE_IDと、その列だけが返されますが、他の列のデータはまだ必要です。どんな助けでも大歓迎です。

4

3 に答える 3

1

オラクルはROW_NUMBER()ウィンドウ関数をサポートしているので、必要に応じて次のことを試してください。

SELECT id, release_id, publish_date, category, title
FROM
(
    SELECT  id, release_id, publish_date, category, title,
            ROW_NUMBER() OVER
           (PARTITION BY category ORDER BY Publish_DATE DESC) rn
    FROM tableName
) x
WHERE rn = 1
于 2012-10-23T15:20:04.330 に答える
0

どうですか

select * from TABLE 
where release_id in (select release_id from 
                      (select distinct(release_id) from TABLE order by PUBLISH_DATE DESC)
                      where rownum <= 10)
于 2012-10-23T15:20:59.137 に答える
0

relese_id はカテゴリと 1 対多の関係にあるため、これを行うことはできません。個別の release_id が必要な場合、「他の列」のデータを取得するにはどうすればよいですか? (カテゴリと同様です。) 他の列で操作する集計関数のみを実行できます。

于 2012-10-23T17:06:11.967 に答える