[英]SQL Find first occurrence of row in table
id name marks
1;"mohit";10
2;"mohit";20
3;"raj";30
4;"rupesh";40
5;"rupesh";50
预期产出是:
1;"mohit";10
4;"rupesh";40
尝试这个
SELECT *
FROM Your_Table
WHERE ID IN (
SELECT Min(ID)
FROM Your_Table
GROUP BY Name
HAVING Count(*) > 1
)
我认为DISTINCT ON
应该在这里工作:
SELECT DISTINCT ON (name) name, id, marks
FROM your_table
ORDER BY name, id;
这假设你想要每个人的第一行关于id
。
晚编辑:
看起来您希望每个名称组中的第一条记录至少出现两次或更多次。 我们可以尝试以下查询:
SELECT id, name, marks
FROM
(
SELECT *,
ROW_NUMBER() OVER (PARTITION BY name ORDER BY id) rn,
COUNT(*) OVER (PARTITION BY name) cnt
FROM your_table
) t
WHERE rn = 1 AND cnt > 1;
使用组来计算多次出现..
SELECT * FROM表WHERE名称IN(SELECT名称FROM表GROUP BY名称HAVING COUNT(名称)> 1)
我认为这应该有效
select * from
(select ROW_NUMBER() OVER(
PARTITION BY name
ORDER BY id ) as rnum , name ,id ,marks
from your_table) A
where rnum = 1
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.