【问题标题】:ms-access queriesms-access 查询
【发布时间】:2016-07-21 11:24:04
【问题描述】:

我从来没有真正做过 ms 访问查询,但今天我需要一个。我有 2 张桌子、模型和订单。从第一个表开始,这里有 2 个字段感兴趣:数字和颜色,从第二个数字开始,它只能等于表 "models" 中的数字值。我需要的是选择最常见的颜色。在 mysql 中是这样的

    SELECT models.color, orders.number  FROM  models
    INNER JOIN orders ON (orders.number =models.number) 
    group by color
    order by count(color) desc limit 1

但在 ms-access 中似乎不起作用 你如何在 ms-access 中编写查询来做同样的事情?

【问题讨论】:

    标签: ms-access


    【解决方案1】:

    试试这个:

    SELECT TOP 1 models.color, COUNT(orders.number)  FROM  models
    INNER JOIN orders ON (orders.number=models.number) 
    GROUP BY models.color
    ORDER BY 2 desc
    

    【讨论】:

    • 当有匹配计数时,这将返回多行。 Top n 与 Limit n 不完全相同
    • 在我的情况下有效,所以这并不重要。
    • 可以使用select top 1语句,但要记住TOP是access sql操作顺序中的最后一项,所以要注意查询速度变慢。
    【解决方案2】:

    您只需要摆脱限制并改用 Top 1:

    SELECT Top 1 models.color  FROM  models
    INNER JOIN orders ON (orders.number =models.number) 
    group by color
    order by count(color) Desc
    

    但是,Top n 有一个警告,在 MS Access 中,Top n 将返回匹配项,因此如果多个项目具有相同的计数,则将全部返回.如果这不适合,您也可以通过按唯一 ID 排序来解决此问题:

    order by count(color) desc, OrderID
    

    还要注意,数字是保留字。

    【讨论】:

    • 这给出了“您试图执行一个不包含指定表达式“数字”的查询作为聚合函数的一部分。
    • 这行得通,但返回了一些奇怪的东西。第一行是白方一击,然后是红四击
    • 问题是,它不应该只返回一行,因为其他行的计数不同吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多