如何为COUNT指定查询?

时间:2014-10-21 11:13:44

标签: sql sql-server sql-server-2008 tsql select

我一直在寻找一点而没有找到任何东西。我不是100%在家里使用SQL,但这就是我想做的事情:

SELECT TOP (SELECT COUNT (DISTINCT Name) 
            FROM Logg WHERE Id= 1) 
* FROM Logg WHERE Id= 1

换句话说,我想要一个查询,它首先计算具有不同“名称”的行数,然后选择给定该计数的前x行数。

我如何构建这样的查询?

4 个答案:

答案 0 :(得分:1)

您的查询确实有效 - 您只需指定列列表:

SELECT TOP (SELECT COUNT (DISTINCT Name) FROM Logg WHERE Id= 1) * -- Need to specify columns
FROM Logg WHERE Id= 1;

SqlFiddle

答案 1 :(得分:0)

将查询分为3部分:

DECLARE @cnt INT
SELECT @cnt = COUNT (DISTINCT TestNamn) FROM SelfTestLogg WHERE ApplikationId = 1
SELECT TOP (@cnt) * FROM SelfTestLogg WHERE ApplikationId = 1

答案 2 :(得分:0)

您是否尝试选择仅出现一次的所有名称?

如果是这样的话:

select name
from logg
where id = 1
group by name
having count(*) = 1;

答案 3 :(得分:0)

SELECT TOP 1 * FROM Logg WHERE Id= 1