如何在选择所有列(包括序列号列)时使用DISTINCT?

时间:2017-08-10 13:31:06

标签: sql oracle

我的查询是在选择所有列时避免在特定列中重复。但是由于seq.number列也被选中,因此DISTINCT不起作用。 任何想法使查询工作 在下面的示例中,查询seq_num是唯一键。

编辑:包括图片中的样本数据

select DISTINCT(name), seq_num from table_1;![enter image description here](https://i.stack.imgur.com/Y3NYn.jpg)

2 个答案:

答案 0 :(得分:2)

对于两列,此查询就足够了:

SELECT name, min(seq_num)
FROM table
GROUP BY name

如需更多专栏,请使用row_number analytic functon

SELECT name, col1, col2, .... col500, seq_num
FROM (
   SELECT t.*, row_number() over (partition by name order by seq_num ) As rn
   FROM table t
)
WHERE rn = 1

上述查询只选择一行具有给定名称和每个名称的最小seq_num值。

答案 1 :(得分:0)

你无法做你想做的事。请阅读有关DISTINCT子句和查询结果集的更多信息。您会理解distinct不适合您的问题。如果您提供了一些示例数据,以了解您拥有的内容以及查询应显示的内容,我们将尽可能为您提供帮助。