mysql - 从mysql计算最畅销的产品

标签 mysql

我试图通过 mysql 查询来获取最畅销的产品列表。问题是即使在我使用 count 之后它仍然会获取所有数据。

select 
    mf.*,
    od.*,
    count(od.product_id) as product_count
from masterflight mf , 
    order_details od 
where od.product_id=mf.ProductCode 
group by od.product_id 
order by product_count

此处 masterflight 是存储产品详细信息及其 id 的表。 order_details 是存储每个单独销售的产品记录的表。我试图放入一个逻辑中,假设 ID 为 2 的产品售出 4 次,每次它都有一个单独的条目,那么我将使用 COUNT 和然后显示它似乎正在工作。

最佳答案

尝试一些更整洁的东西:

select
    mf.ProductCode,
    count(od.*) as product_count
from
    order_details od
    inner join masterflight mf on
        od.product_id = mf.ProductCode
group by
    mf.ProductCode
order by product_count desc

问题是你选择了所有的 od,但你没有按它分组,所以你只是得到所有的订单行,这对你没有真正的帮助根本。我应该指出,MySQL 是唯一允许这种行为的主要 RDBMS——它令人困惑且难以调试。我建议不要使用该特定功能。作为一般规则,如果您选择了一列但没有聚合(例如-sumavgmin 等.) 上,那么您需要在 group by 子句中使用它。

关于mysql - 从mysql计算最畅销的产品,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20794772/

相关文章:

mysql - 我可以使用子查询代替什么来搜索 MAX()?

c# - 来自 c# WinApp 的 Mysql 数据库的存储过程

php - 通过切换选择中的选项在不同的表列中显示不同的数据

PHP MySQL 增删改查 : Am I deleting safely?

定义 INNER JOIN 表时 MySQL 存储函数语法错误

php - 在 HTML 中运行 PHP 错误(此页面无法正常工作)

php - mysqli - 我真的需要做 $result->close(); & $mysqli->close();?

php - 在特定类别的 MySQL 列中查找具有相同值的行

mysql - Spark 中的 mysql 查询序列

php - 从magento中的2个表获取数据