[英]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
Expected output is : 预期产出是:
1;"mohit";10
4;"rupesh";40
Try this 尝试这个
SELECT *
FROM Your_Table
WHERE ID IN (
SELECT Min(ID)
FROM Your_Table
GROUP BY Name
HAVING Count(*) > 1
)
I think DISTINCT ON
should work here: 我认为
DISTINCT ON
应该在这里工作:
SELECT DISTINCT ON (name) name, id, marks
FROM your_table
ORDER BY name, id;
This assumes that you want the first row of each person with regard to the id
. 这假设你想要每个人的第一行关于
id
。
Late Edit: 晚编辑:
It looks like you want the first record from each name group where a name appears at least two or more times. 看起来您希望每个名称组中的第一条记录至少出现两次或更多次。 We can try the following query:
我们可以尝试以下查询:
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;
USE GROUP BY TO COUNT MULTIPLE OCCURENCE.. 使用组来计算多次出现..
SELECT * FROM table WHERE name IN( SELECT name FROM table GROUP BY name HAVING COUNT(name) > 1) SELECT * FROM表WHERE名称IN(SELECT名称FROM表GROUP BY名称HAVING COUNT(名称)> 1)
I think this should work 我认为这应该有效
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.