没有重复的Oracle SQL语句

时间:2018-10-03 14:12:43

标签: sql oracle

我需要编写一条SQL语句以返回2列,但是这些列中的任何一个都不能重复。例如:

    print qq{Number: "$info{ number }"\n};
    print qq{Title: "$info{ Title }"\n};
    print qq(Description: {"$info{ Description }"}\n);
};

使用distinct不起作用,因为上面突出显示的行是distinct。返回哪个重复项也没关系。

有人知道这样做的方法吗?感觉好像我缺少明显的东西。

谢谢。

3 个答案:

答案 0 :(得分:3)

您可以尝试通过col2来创建行号并获取rn = 1数据行。

CREATE TABLE T(
   col1 int,
   col2 varchar(5)
);


insert into t values (10,'A');
insert into t values (11,'B');
insert into t values (12,'C');
insert into t values (13,'A'); 

查询1

SELECT t1.col1,t1.col2
FROM (
    SELECT t1.*,ROW_NUMBER() OVER(PARTITION BY col2 ORDER BY col1) rn
    FROM T t1
)t1
WHERE t1.rn = 1

Results

| COL1 | COL2 |
|------|------|
|   10 |    A |
|   11 |    B |
|   12 |    C |

答案 1 :(得分:1)

如果只希望第一列中的最小值,请执行以下操作:

SELECT MIN(column1), column2
FROM YourTable
GROUP BY column2

答案 2 :(得分:0)

在一个查询中这是不可能的,因为每一列都有不同数量的唯一值