mysql返回GROUP BY查询中的最低列值

时间:2017-01-17 17:59:10

标签: php mysql

我已经在程序中使用了这个查询很长一段时间了,但它已经开始给我错误的结果了。我希望每个唯一的LEVEL返回一个列名,然后在该级别找到最低的z_index值。

SELECT * FROM Conrad WHERE ProductID = '1' GROUP BY level ORDER BY z_index

过去常常返回这样的内容:

ProductID    level    z_index
==============================
   1          One       10
   1          Two       20
   1          Three     30

这是预期的结果。但它现在正在回归:

ProductID    level    z_index
==============================
   1          One       83
   1          Two       224
   1          Three     308

我仍然每个级别获得一个,但它现在返回为该级别找到的任何z_index值。

MySql中有什么变化或我的查询永远不好吗?

更新星期六1月21日:现在,当我添加更多列名称时,我将需要查询返回z_index的正确值,但file_name和file_loc的值似乎来自第一行级别而不是包含正确z_index值的行的级别。

导致这种情况发生的原因是什么?

SELECT ProductID, level, min(z_index), file_name, file_loc FROM Conrad WHERE ProductID = '1' GROUP BY level ORDER BY z_index

ProductID    level    z_index   file_name   file_loc
====================================================
   1          One       10        wrong.png    ?
   1          Two       20        file.png     ?
   1          Three     30        names.png    ?

2 个答案:

答案 0 :(得分:2)

您的查询对于最小值是错误的。尝试以下查询

assign_attributes(duration: sp.duration, num_lessons: sp.num_lessons)

答案 1 :(得分:0)

试试这个:

select
  productid,
  level,
  min(z_index)
from
  Conrad 
WHERE 
  ProductID = '1' 
GROUP BY 
  level 
ORDER BY z_index