Php mysql返回GROUP BY query中的最低列值
我已经在一个程序中使用这个查询很长时间了,但是它开始给我错误的结果。我希望每个唯一级别返回一个列名,然后返回该级别中的最低z_索引值Php mysql返回GROUP BY query中的最低列值,php,mysql,Php,Mysql,我已经在一个程序中使用这个查询很长时间了,但是它开始给我错误的结果。我希望每个唯一级别返回一个列名,然后返回该级别中的最低z_索引值 SELECT * FROM Conrad WHERE ProductID = '1' GROUP BY level ORDER BY z_index 它通常返回如下内容: ProductID level z_index ============================== 1 One 10 1
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_索引值为该级别找到
SELECT * FROM Conrad WHERE ProductID = '1' GROUP BY level ORDER BY z_index
MySql有什么变化吗?或者我的查询永远都不好
1月21日星期六更新:现在,当我添加更多需要的列名时,查询将返回z_索引的正确值,但file_name和file_loc的值似乎来自级别的第一行,而不是包含正确z_索引值的行
是什么导致了这种情况
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
你的质询永远是错误的。如果你使用GROUP BY,使用一个聚合函数(),比如min(z_index),它看起来有点像是一个字符串,z_index列是int(4),在这个上下文中(4)是没有意义的。但是reza的查询将返回正确的值-除非您遗漏了一些信息。您能给我看一下。。。这对我来说没有错。原来的海报上没有提到这一点。他回答了这个问题。在这种情况下,您还必须按productid进行分组。我认为这里不需要。哈哈。所以对于这个项目将来可能进行的修改,您说当前的查询是错误的。。。我无法反驳这一逻辑,但仍然感觉到它的严厉判断。这一质疑非常有效。我怀疑我最初的查询很幸运,因为很久以前表的自然顺序是这样的。谢谢@user1601513,这里的数字不同吗?