用于查询的MS Access SQL查找“SecondOfID”

时间:2018-01-18 19:19:28

标签: sql ms-access

基本上,我正在寻找一种在MS Access中运行类似于FirstOF的查询的方法,但是我不需要返回第一次出现,而是需要第二次出现。例如,在下表中,我想在item列中返回第二个唯一的匹配项:

 - ID   Item  Color
 - 1    Hat   Red
 - 2    Hat   Orange
 - 3    Hat   Yellow
 - 4    Hat   Green
 - 5    Hat   Blue
 - 6    Scarf Purple
 - 7    Scarf Brown
 - 8    Pants Black
 - 9    Pants Grey
 - 10   Pants White

我希望查询返回:

 - ID   Item    Color
 - 2    Hat     Orange
 - 7    Scarf   Brown
 - 10   Pants   Grey

感谢任何帮助。感谢。

1 个答案:

答案 0 :(得分:0)

这在MS-Access中有点痛苦。这可能在MS Access中有效:

select t.*
from t
where t.id = (select max(t2.id)
              from (select top (2) t2.*
                    from t as t2
                    where t2.item = t.item
                    order by id
                   ) as t2
             );

否则,计数方法也有效:

select t.*
from t
where 2 = (select count(*)
           from t t2
           where t2.item = t.item and t2.id <= t.id
          );

这在其他数据库中要容易得多。因此,如果您有机会使用其他数据库,则可能需要切换。