按日期排序在MySql中未按预期工作

时间:2016-07-28 19:06:45

标签: mysql

我有一个mysql查询

    select count(*) as TotalCount,
           pd.Product_Modified_Date,
           psc.Product_Subcategory_Name,
           pd.Product_Image_URL
      from product_subcategory psc
inner join product_details pd on psc.Product_Subcategory_ID = pd.Product_Subcategory_Reference_ID
     where pd.Product_Status = 0 and
           psc.Product_Subcategory_Status = 0
  group by psc.Product_Subcategory_Name
  order by pd.Product_Modified_Date desc

enter image description here

在我的product_details表中有新的图片网址。但我无法通过上述查询得到它。

我该怎么做?

2 个答案:

答案 0 :(得分:2)

您要按一列nicefitcareers.com进行分组,但您的选择列表中还有其他列Product_Subcategory_NameProduct_Image_URL

如果您的组有多行(您执行此操作,因为每组中的计数为14或更多),MySQL只能为Product_Modified_Date提供一个值。所以它在组中选取一些行,并使用该行中的值。将忽略组中所有其他行的URL值。

要解决此问题,您必须按选择列表中不属于聚合函数的所有列进行分组。您不想用于组成新组的任何列都必须进入聚合函数。

Roland Bouman撰写了一篇精彩的博客,详细介绍了如何正确使用GROUP BY:http://rpbouman.blogspot.com/2007/05/debunking-group-by-myths.html

答案 1 :(得分:1)

合并GROUP BYORDER BY是有问题的,您的问题最有可能在Stack Exchange上的另一个问题中涵盖:MySQL wrong results with GROUP BY and ORDER BY