MYSQL选择语句Order By with Group By

时间:2010-05-21 18:47:11

标签: 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)

你能帮忙吗?

3 个答案:

答案 0 :(得分:4)

在字段列表中将, value_id更改为, MAX(value_id) AS value_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_id和value_name。因此,获取与value_id关联的value_name的唯一方法是通过子查询(我在那里做的)或连接...

答案 1 :(得分:1)

SELECT id, name, value_name, MAX(value_id )
FROM table 
GROUP BY id, name, value_name
ORDER BY value_id DESC

答案 2 :(得分:-1)

您可以通过以下声明获得最大的value_id:

SELECT id, name, value_name, value_id
FROM table
GROUP BY value_id 
HAVING max(value_id)

如果您想获得其他列,可以使用子查询。