2010-05-21 60 views
1

我有以下簡單的SQL statmentMYSQL選擇statment以便能夠通過與集團通過

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

分組我想獲得其中value_id是最大的元組的值名稱和value_id時。它的方式是我獲得最小的價值。例如

1, name1, valuename, 3  (where i know that there is a value_id of 5) 

你能幫忙嗎?

回答

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與name相同的行,但每個行都有唯一的value_id和value_name。因此,唯一的方式來獲得與value_id相關的值名稱是既可以通過一個子查詢(我做什麼有),或加入...

+0

您將需要按其他非聚合字段進行分組。 – 2010-05-21 18:52:52

+0

@irchmaxell他仍然需要將name和value_name添加到他的group by子句中。 – AieshaDot 2010-05-21 18:52:57

+0

實際上,我只是意識到他要求與MAX關聯的value_name(value_id)。編輯答案對應... – ircmaxell 2010-05-21 19:05:22

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

您可以通過這一說法得到最大value_id:

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

如果你想獲得其他列,你可以使用它的子查詢。