簡體   English   中英

MySQL查詢未給出預期結果

[英]MySQL query not giving expected results

我是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子句中使用逗號。 始終使用帶有適當的ON子句的顯式,正確,標准的JOIN語法。

如果只需要一個這樣的模型,最簡單的方法是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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM