Sql 获取access2010中每个组的第一行
有多种方法可以从每个组中获取第一行,但我的想法中没有一种是使用access2010 您是否有在access2010中获得第一行的解决方案 或 它应该获得每个组中的第一行(名称列),这样输出将是Sql 获取access2010中每个组的第一行,sql,ms-access,Sql,Ms Access,有多种方法可以从每个组中获取第一行,但我的想法中没有一种是使用access2010 您是否有在access2010中获得第一行的解决方案 或 它应该获得每个组中的第一行(名称列),这样输出将是 1 Name1 3 2 Name2 4 这里有一个解决方案,它仍然使用子查询,但只使用一次,而不是在每个记录上 SELECT T1.* FROM mytable AS T1 WHERE T1.id IN (SELECT First(T2.id) FROM
1 Name1 3
2 Name2 4
这里有一个解决方案,它仍然使用子查询,但只使用一次,而不是在每个记录上
SELECT T1.*
FROM mytable AS T1
WHERE T1.id IN (SELECT First(T2.id)
FROM mytable T2
GROUP BY T2.name)
您的id列是标识列吗?我不应该使用子查询,这是这里的一个条件。这对我来说是个难题。奇怪……但如果不使用subqt,似乎没有任何好的解决方案。这被称为组模式中的前N。您可能需要在子查询中指定一个表名别名,以便在不引发Access错误的情况下引用它两次。查询按原样为我工作。但因为我喜欢“表名别名”让它更具可读性,所以我对它进行了编辑。+1:我对你的原始答案投了更高的票,因为它对我也有效。有了SQL方言的各种变体,我希望更多的人能够在实际环境中测试他们的答案(就像你所做的那样),而不是(1)猜测,或者(2)在尝试“帮助”的同时为不同的SQL方言提供解决方案。谢谢。我明白了不少。我认为这可能会让事情变得更混乱,而不是有帮助。+1耶,如果您在内层和外层都引用smae字段,那么可能只需要别名,但它也有助于可读性。
select * from table t1 where ID in
(sel min(ID) from table where t1.name=name);
SELECT T1.*
FROM mytable AS T1
WHERE T1.id IN (SELECT First(T2.id)
FROM mytable T2
GROUP BY T2.name)