Sql 如何在对行进行分组时获取重复项?

Sql 如何在对行进行分组时获取重复项?,sql,tsql,Sql,Tsql,我有这张桌子: MyTableID,FK。。。 我正在使用此查询: select ID fromMytable were FK <> 1 group by ID, FK order by ID 这给了我想要的结果: 255 255 267 268 790 ... 255是重复的,因为有两个不同的KF。其余ID具有相同的FK。我想获得具有多个FK且具有不同值的ID 如果一个ID有两行FK=2和FK=3,则获取此ID,但如果该ID有FK=2、FK=2、FK=2,则我不想要此ID,因为它

我有这张桌子:

MyTableID,FK。。。 我正在使用此查询:

select ID fromMytable were FK <> 1
group by ID, FK
order by ID
这给了我想要的结果:

255 255 267 268 790 ... 255是重复的,因为有两个不同的KF。其余ID具有相同的FK。我想获得具有多个FK且具有不同值的ID

如果一个ID有两行FK=2和FK=3,则获取此ID,但如果该ID有FK=2、FK=2、FK=2,则我不想要此ID,因为它具有相同的FK

我怎么能拿到这个身份证

非常感谢。

请使用只查找一个以上ID的方法:

select DISTINCT ID
from Mytable
where FK <> 1
group by ID, FK
having count(*) >= 2
order by ID
试试这个:

SELECT
    ID, COUNT(*)
FROM
    fromMytable 
WHERE 
     FK <> 1
GROUP BY
    ID
HAVING 
    COUNT(*) > 1
ORDER BY ID
您应该计算不同的FK

您可以使用行数窗口功能

SELECT ID FROM
(
    SELECT ROW_NUMBER() OVER (PARTITION BY ID ORDER BY ID) RN, ID 
    from Mytable WHERE FK <> 1
) TMP
WHERE RN = 1

我想你不需要清楚的身份证。简单的身份证就行了如果我删除DISTINCT,则重复的FK将列出多次。我按id和fk分组。非常感谢,关键是fk的计数不同。
SELECT ID FROM
(
    SELECT ROW_NUMBER() OVER (PARTITION BY ID ORDER BY ID) RN, ID 
    from Mytable WHERE FK <> 1
) TMP
WHERE RN = 1