我已经在程序中使用此查询一段时间了,但它开始给我错误的结果。我希望每个唯一的 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 ?
您的查询对于最小值几乎没有错误。 尝试以下查询
SELECT ProductID
, level
, MIN(z_index) z_index
FROM Conrad
WHERE ProductID = 1
GROUP
BY ProductID
, level
ORDER
BY z_index
试试这个:
select
productid,
level,
min(z_index)
from
Conrad
WHERE
ProductID = '1'
GROUP BY
level
ORDER BY z_index