假设我有一张桌子
id value
------ ---------
A 123
A 422
B 441
B 986
B 674
C 648
我需要一个查询,它只返回那些与它们关联的 3 个或更多值的 id。所以,在这种情况下,它只会返回 B。谢谢。
假设我有一张桌子
id value
------ ---------
A 123
A 422
B 441
B 986
B 674
C 648
我需要一个查询,它只返回那些与它们关联的 3 个或更多值的 id。所以,在这种情况下,它只会返回 B。谢谢。
如果您想包含该值,您可以使用窗口函数来查找具有三行或更多行的值,例如:
DECLARE @x TABLE(id CHAR(1), value INT);
INSERT @x SELECT 'A', 123;
INSERT @x SELECT 'A', 422;
INSERT @x SELECT 'B', 441;
INSERT @x SELECT 'B', 986;
INSERT @x SELECT 'B', 674;
INSERT @x SELECT 'C', 648;
;WITH x AS
(
SELECT id, value, rn = ROW_NUMBER() OVER (PARTITION BY id ORDER BY id)
FROM @x
)
SELECT id FROM x WHERE rn = 3;
您可以更改ORDER BY
以帮助更好地确定value
包含哪些内容。
select id from table group by id having (count(id) >=3)
SELECT ID
FROM TABLE
GROUP BY ID
HAVING COUNT(*) >= 3