【问题标题】:sql in ms-access [closed]ms-access中的sql [关闭]
【发布时间】:2019-06-10 08:07:23
【问题描述】:

我有一个表名customers,有两列,case id 和 owner。我需要编写一个查询来为所有者列中的每个名称随机选择 5 个 caseid。请帮助

【问题讨论】:

  • StackOverflow 不是代码编写服务。请通读Help Center,尤其是How do I ask a good question? 如果您遇到特定问题,请彻底研究,在这里彻底搜索,如果您仍然卡住,请发布您的代码和问题描述。另外,请记住包括Minimum, Complete, Verifiable Example。人们会很乐意提供帮助
  • 当您点击创建此帖子时,按钮显示“”。但“我想要”或“我需要”不是问题。我们将帮助您修复错误。一般来说,这里的大多数人不会完全为你做你的工作,除非它是微不足道的。你做了什么研究?你试过什么代码?你面临什么问题?请阅读stackoverflow.com/help/how-to-ask 以获取有关如何提出有用问题的进一步指导。

标签: sql ms-access


【解决方案1】:

首先,您需要以下内容:

SELECT TOP 5
    ID, 
    [Case ID], 
    [Owner], 
    Rnd(-Timer()*[ID]) AS RandomRecord
FROM 
    [Cases]
ORDER BY 
    Rnd(-Timer()*[ID]);

用作根据您的 Owners 表的 OwnerID 过滤的子查询。

我曾经发布过一篇关于此的文章,其中包含更多详细信息:

Random Rows in Microsoft Access

【讨论】:

    【解决方案2】:

    你可以使用in:

    select t.*
    from t
    where t.id in (select top 5 id
                   from t as t2
                   where t2.name = t.name
                   order by Rnd(-Timer()*[ID])
                  );
    

    【讨论】:

    • 谢谢。不是反对者,对不起我直接表达自己的方式。
    • @ErikvonAsmuth 。 . .完全没有问题。你毫无疑问是对的。令我困扰的是,微软总体上似乎并不了解易变函数和查询优化。
    • 您好,当我使用此代码时,它给了我一个输入字段,并要求先输入一些输入作为 t2 名称,然后作为 t1 名称,你能解释一下吗
    • @chiragpuri 。 . .此查询中没有 t1.namet 是你的表名。
    猜你喜欢
    • 2021-08-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-04-05
    • 1970-01-01
    • 2023-03-17
    相关资源
    最近更新 更多