簡體   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

預期產出是:

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM