【问题标题】:PHP/MySQLi query w/ distict and other parametersPHP/MySQLi 查询带有/ distinct 和其他参数
【发布时间】:2013-12-28 11:28:10
【问题描述】:
+------------+-----------+----------+
| 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"

但它只获取第一行 col1 的 col2 和 col3。从示例表中,我的查询将返回:

Steven 12 30
Neena 14 39

如何扩展我的查询以获得我想要的结果?也许查询应该不同,然后用php处理成我想要的?

【问题讨论】:

    标签: php mysql


    【解决方案1】:

    您忘记指定您想要两列的最小值和最大值,所以它只是从每组中选择任意值。

    SELECT Series, MIN(YearsFrom) YearsFrom, MAX(YearsTo) YearsTo
    FROM combine_data
    WHERE Make = '$komb'
    GROUP BY Series
    ORDER BY YearsFrom
    

    【讨论】:

    • 嗯,这比我想象的要容易。有很多小但非常有用的东西我仍然需要学习。非常感谢您快速正确的回答。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-07-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-03-14
    • 1970-01-01
    相关资源
    最近更新 更多