从访问表中返回每人 10 行

  • 本文关键字:返回 访问表 ms-access
  • 更新时间 :
  • 英文 :


我有一个表,其中包括ID,人名,然后是一些其他数据。 我正在尝试编写一个查询,该查询仅为每个人返回 10 行(理想情况下是 10 个随机行,但如果必须是每个人的前 10 行,那就足够了(。 我发现 SQL 从表中返回 10 行随机行,但不是每人返回 10 行。 这说明了如何在 Oracle 中解决它,但我在 Access 中无法做到这一点:SQL 每行返回 n 行值

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 条(。

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

下面的代码为可以找到的每个名称返回 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 选择按多个字段分组的前 n 个查询只是根据您的需要对其进行了修改。

亲切问候

沃特

最新更新