+------------+-----------+----------+
| col1 | col2 | col3 |
+------------+-----------+----------+
| Steven | 12 | 30 |
| Steven | 10 | 37 |
| Steven | 16 | 42 |
| Steven | 11 | 30 |
| Neena | 14 | 39 |
| Neena | 11 | 35 |
| Neena | 9 | 35 |
+------------+-----------+----------+
所以我有一个结构与此类似的表格。我想获得 col1 的不同值,但随之获得最少数量的 col2 和最大的 col3。并且还按 col2 对它们进行升序排序。因此,最终结果将如下所示:
Neena 9 39
Steven 10 42
我尝试了 DISTINCT 和 GROUP BY,但我的菜鸟 php/mysql 技能并没有给我带来我想要的结果。我通过这个确切的查询得到的最接近的结果:
SELECT `Series`,`YearsFrom`,`YearsTo` FROM `combine_data` WHERE `Make`='$komb' GROUP BY `Series` ORDER BY `YearsFrom` ASC"
但它只获取第一行的 col2 和 col3。从示例表中,我的查询将返回:
Steven 12 30
Neena 14 39
如何扩展查询以获得所需的结果?也许查询应该不同,然后用 php 处理成我想要的?
您忘记指定需要两列的最小值和最大值,因此它只是从每个组中选取任意值。
SELECT Series, MIN(YearsFrom) YearsFrom, MAX(YearsTo) YearsTo
FROM combine_data
WHERE Make = '$komb'
GROUP BY Series
ORDER BY YearsFrom