我一直在寻找一点而没有找到任何东西。我不是100%在家里使用SQL,但这就是我想做的事情:
SELECT TOP (SELECT COUNT (DISTINCT Name)
FROM Logg WHERE Id= 1)
* FROM Logg WHERE Id= 1
换句话说,我想要一个查询,它首先计算具有不同“名称”的行数,然后选择给定该计数的前x行数。
我如何构建这样的查询?
答案 0 :(得分:1)
您的查询确实有效 - 您只需指定列列表:
SELECT TOP (SELECT COUNT (DISTINCT Name) FROM Logg WHERE Id= 1) * -- Need to specify columns
FROM Logg WHERE Id= 1;
答案 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