繁体   English   中英

选择所有列,其中1是不同的

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM