我已经在程序中使用了这个查询很长一段时间了,但它已经开始给我错误的结果了。我希望每个唯一的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 ?
答案 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