[英]Select all columns with 1 being distinct
好了,所以我有一个包含以下各列的表
| id | release_id | publish_date | category | title |
基于此结构, release
可以具有多个类别 ,这在表中为其添加了新行。 我的页面浏览量之一列出了最新的x版本(所有类别)。 当我运行这样的查询时:
select *
from (select *
from TABLE
order by PUBLISH_DATE DESC)
where rownum <= 10
如果最新的发行版(在这种情况下为10)之一具有多个类别,它将返回两次,因此我尝试添加UNIQUE或DISTINCT(或任何其他适当的方式),以使RELEASE_ID与返回的行不同。
当我运行select DISTINCT RELEASE_ID
,仅返回该列,但是我仍然需要其他列中的数据 。 任何帮助表示赞赏。
由于oracle支持ROW_NUMBER()
和window函数,因此请根据需要尝试以下方法。
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
怎么样
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)
您无法执行此操作,因为relese_id与类别具有1对多的关系。 如果要使用不同的release_id,如何获取“其他列”数据? (例如类别。)您只能对任何其他列执行聚合函数。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.