我有以下简单的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)
你能帮忙吗?
答案 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)
如果您想获得其他列,可以使用子查询。