MySQL 查询未给出预期结果

标签 mysql

我是 MySQL 新手,我正在尝试解决一个项目的问题。

我有三个表:汽车、销售和客户。 汽车有 VID 作为 pk 和一些其他属性,如型号和价格。 客户有 CID 作为 pk 和一些属性。 sales 将 (VID,CID) 作为 pk,并将销售价格和销售日期作为属性。

问题是:“2014 年最常销售的汽车型号是什么”?

这是我的查询

Select Model
From Cars,Sales
Where Cars.VID=Sales.VID
Group By Cars.VID 
Having MAX( (Select count(*)
         From Cars,Sales Where Cars.VID=Sales.VID AND SellDate Between  '2014-01-01' And '2014-12-30'));

我仍然得到销售表中存在的所有型号, 能告诉我出了什么问题吗?

最佳答案

首先:切勿FROM 中使用逗号条款。 始终使用明确、正确、标准的JOIN具有适当的 ON 的语法条款。

如果您只想要一个这样的模型,最简单的方法是 ORDER BYLIMIT :

Select c.Model
From Cars c JOIN
     Sales s
     on c.VID = s.VID
where s.SellDate >=  '2014-01-01' And
      s.SellDate < '2015-01-01'
Group By c.Model
Order by count(*) desc
limit 1;

附加说明:

  • GROUP BY 中的列应与 SELECT 中的未聚合列匹配,几乎总是
  • 使用表名称缩写的表别名。
  • 限定所有列名称,以便您(和其他人)知道它们的来源。
  • 注意日期算术的变化。我上次听说,2014年12月31日是2014年(你们的业务规则可能不同)。我更喜欢<between ,以防“日期”列也有时间戳。

关于MySQL 查询未给出预期结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40192724/

相关文章:

一直困扰我的MySql优化/速度

python - 为什么这不会使用 python 插入到我的数据库中?

python - 如何将 python 中定义的变量值作为输入传递给 mysql 中的过程?

mysql - 在是(对象,Cl): error while fetching rows R

mysql - 如何将 MySQL 数据库转储转换为新的 PG 数据库?

php - Laravel 和移动应用程序的 Facebook 登录

mysql - 真实项目,什么时候可以达到bigint maxvalue

mysql - 如何更新MySQL中另一个表的内连接表的字段?

mysql - 具有公开 SQL 的 SaaS

php - mysqli fetch_assoc() 未发布