gpt4 book ai didi

MySQL 查询未给出预期结果

转载 作者:行者123 更新时间:2023-11-29 11:13:07 24 4
gpt4 key购买 nike

我是 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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com