Sql 如何在对行进行分组时获取重复项?
我有这张桌子: MyTableID,FK。。。 我正在使用此查询: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,因为它
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