Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/58.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
MYSQL选择statment Order By和Group By_Sql_Mysql_Select_Group By_Sql Order By - Fatal编程技术网

MYSQL选择statment Order By和Group By

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\

我有以下简单的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\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。编辑答案对应。。。