我在程序中使用这个查询已经有一段时间了,但它开始给我错误的结果。我期望为每个唯一的 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
关于php - mysql返回GROUP BY查询中的最低列值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41703933/