MYSQL选择statment Order By和Group By
我有以下简单的SQL语句MYSQL选择statment Order By和Group By,sql,mysql,select,group-by,sql-order-by,Sql,Mysql,Select,Group By,Sql Order By,我有以下简单的SQL语句 SELECT id, name, value_name, value_id FROM table GROUP BY id ORDER BY value_id DESC 分组时,我希望得到元组的value_name和value_id,其中value_id最大。我得到的是最小的值。比如说 1, name1, valuename, 3 (where i know that there is a value_id of 5) 您能帮忙吗?将字段列表中的、value\
SELECT id, name, value_name, value_id
FROM table
GROUP BY id
ORDER BY value_id DESC
分组时,我希望得到元组的value_name和value_id,其中value_id最大。我得到的是最小的值。比如说
1, name1, valuename, 3 (where i know that there is a value_id of 5)
您能帮忙吗?将字段列表中的
、value\u id
更改为、MAX(value\u id)作为value\u id
事实上,现在我看到了,我想你想要的是这样的:
SELECT a.id, a.name, MAX(b.value_id) AS value_id, (SELECT b.value_name FROM table AS b WHERE b.id = a.id AND b.value_id = MAX(a.value_id)) AS value_name
FROM table AS a
GROUP BY a.id, a.name
ORDER BY value_id DESC
问题是该表没有完全规范化。因此,您有多个id和名称相同的行,但每个行都有一个唯一的value\u id和value\u name。因此,获取与值id关联的值\u名称的唯一方法是通过子查询(我在那里所做的)或联接…您可以通过以下语句获取最大值\u id:
SELECT id, name, value_name, MAX(value_id )
FROM table
GROUP BY id, name, value_name
ORDER BY value_id DESC
SELECT id, name, value_name, value_id
FROM table
GROUP BY value_id
HAVING max(value_id)
如果要获取其他列,可以使用子查询 您需要按其他非聚合字段分组。@irchmaxell他仍然需要将name和value\u name添加到他的groupby子句中。事实上,我刚刚意识到他要求的是与MAX(value\u id)关联的value\u name。编辑答案对应。。。