Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/80.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 获取access2010中每个组的第一行_Sql_Ms Access - Fatal编程技术网

Sql 获取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

有多种方法可以从每个组中获取第一行,但我的想法中没有一种是使用access2010

您是否有在access2010中获得第一行的解决方案

它应该获得每个组中的第一行(名称列),这样输出将是

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)