我需要编写一条SQL语句以返回2列,但是这些列中的任何一个都不能重复。例如:
print qq{Number: "$info{ number }"\n};
print qq{Title: "$info{ Title }"\n};
print qq(Description: {"$info{ Description }"}\n);
};
使用distinct不起作用,因为上面突出显示的行是distinct。返回哪个重复项也没关系。
有人知道这样做的方法吗?感觉好像我缺少明显的东西。
谢谢。
答案 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)
在一个查询中这是不可能的,因为每一列都有不同数量的唯一值