从Access表返回每人10行

时间:2014-12-02 01:52:07

标签: ms-access

我有一张表,其中包含ID,人物姓名,以及其他一些数据。我试图编写一个查询,每个人只返回10行(理想情况下是10个随机行,但如果它必须是每个人的前10行,那就足够了)。我发现SQL从表中返回10个随机行,但不是每人10行。这告诉我们如何在Oracle中解决它,但是我在Access中无法做到这一点:SQL return n rows per row value

select  *
from    (
        select  row_number() over (partition by BirthCountry 
                                   order by dbms_random.value) as rn
        ,       FirstName
        ,       LastName
        ,       BirthDate
        ,       BirthCountry
        from    YourTable
        )
where   rn <= 10
编辑:我现在根据发布到评论的链接尝试了这个,它只返回一条记录(对于表中只有一条记录的人 - 所有其他记录都超过10条)。 / p>
SELECT a.ID, a.mapped_prov_name, Count(*) AS rank_number
FROM qryJustNames AS a
INNER JOIN qryJustNames AS b ON a.mapped_prov_name = b.mapped_prov_name
GROUP BY a.ID, a.mapped_prov_name
HAVING COUNT(*) <= 10
ORDER BY a.mapped_prov_name

1 个答案:

答案 0 :(得分:0)

以下代码为每个可以找到的名称返回10个随机数据行。

SELECT yt.id, yt.name, yt.data
FROM yourtable yt
WHERE id IN
(
SELECT TOP 10 id
FROM yourtable
WHERE name = yt.name
ORDER BY rnd(yt.id)
)
ORDER BY id, name

我在这里找到了答案:MS Access Select top n query grouped by multiple fields 只是根据您的需要进行了修改。

亲切的问候,

的Wouter

相关问题