简体   繁体   English

SQL查找表中第一次出现的行

[英]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

在此输入图像描述

Demo 演示

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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM