我有以下数据结构
ID | REFID | NAME
1 | 100 | A
2 | 101 | B
3 | 101 | C
使用
SELECT DISTINCT REFID, ID, NAME
FROM my_table
ORDER BY ID
我希望得到以下结果:
1 | 100 | A
2 | 101 | B
Colum NAME和ID应包含MIN或FIRST值。
但实际上我在这里坚持使用MIN / FIRST。
我欢迎每一个tipps: - )
答案 0 :(得分:4)
select id,
refid,
name
from (select id,
refid,
name,
row_number() over(partition by refid order by name) as rn
from my_table)
where rn = 1
order by id
答案 1 :(得分:1)
您可以使用子查询来执行此操作。
WITH Q AS
( SELECT MIN(NAME) AS NAME, REFID FROM T GROUP BY REFID )
SELECT T.ID, T.REFID, T.NAME
FROM T
JOIN Q
ON (T.NAME = Q.NAME)
另请注意,SQL表没有订单。所以没有“第一”价值。