哈o
我有一张 table (看下面),它有4条记录。请注意,ColumnA和ColumnB具有相同的值,而ColumnC和columnD将具有不同的值。
ColumnA ColumnB ColumnC ColumnD
------- ------- ------- -------
xx yy AAA 333
xx yy BBB 555
xx yy AAA 333
xx yy BBB 555
我试图使用Group By查询选择整个记录,如下所示:
SELECT ColumnC from TableA GROUP BY ColumnC;
该查询仅向我显示ColumnC,但我的期望是不仅选择ColumnC,还要选择整个记录。
更新:我的预期输出是:
ColumnA ColumnB ColumnC ColumnD
------- ------- ------- -------
xx yy AAA 333
xx yy BBB 555
我可以知道该怎么做吗?
谢谢 @!
最佳答案
在Oracle中:
SELECT *
FROM (
SELECT t.*,
ROW_NUMBER() OVER (PARTITION BY columnC ORDER BY columnA) AS rn
FROM mytable
)
WHERE rn = 1
更改
ORDER BY
子句以控制将返回包含重复项的记录(现在返回columnA
的值最小的记录)。