我的桌子像这样:
name | var
----------------
Joe | 3
Liz | 1
Liz | 4
Joe | 2
Peter | 3
Joe | 7
Liz | 2
我正在寻找一个MYSQL查询,该查询将为我提供列name
的DISCTINCT名称,其中var
与name
相关Joe | 7
Liz | 4
Peter | 3
。
所以,对于上面的例子,我正在寻找
SELECT name, var
FROM table
GROUP BY name
ORDER BY var DESC
我的尝试是:
SELECT DISTINCT name, var
我也试过了,
SELECT DISTINCT(name), var
或
{{1}}
但是我得到了名字的不同组合var
答案 0 :(得分:2)
你需要使用聚合函数MAX()
来获得你想要的GROUP BY
:
SELECT name, MAX(var) as var
FROM table
GROUP BY name
ORDER BY name ASC
...在这种情况下ORDER BY
子句是可选的。
答案 1 :(得分:2)
答案 2 :(得分:1)
SELECT NAME, MAX(VAR) as var FROM XYZ GROUP BY NAME
---示例:
你有SELECT NAME, VAR FROM XYZ
Name | var
Mustafa 6
Tim 4
Tim 7
Joey 3
Tim 5
Joey 8
Mustafa 12
现在使用分组功能后,您将获得以下内容,这是GROUP BY功能的结果。它不关心其他列及其值。所以你可能在这里有一些随机数。
SELECT NAME, VAR FROM XYZ GROUP BY NAME
Name | var
Tim 5
Joey 3
Mustafa 12 <-- only this record ok?!
----现在我们使用MAX()
作为“var”字段。所以它总是在我们的组中搜索MAX()值的所有记录。如果您愿意,可以为MAX()值添加Order语句。 (ORDER BY MAX(VAR)
)
SELECT NAME, MAX(VAR) as var FROM XYZ GROUP BY NAME
Name | var
Tim 7
Joey 8
Mustafa 12