2012-07-09 87 views
1

我已經瘋了,不知道還有什麼可以嘗試的。 我得到了這樣的數據:mysql select和MAX()

表名是erste

valuta kupovni  
EUR  7.435 
GBP  9.2132 

然後我試試這個:

SELECT valuta, MAX(kupovni) 
FROM erste 

我得到這個:

valuta MAX(kupovni) 
EUR 9.213199615478516 

我想:

GBP 9.2132 

Column valuta是varchar(3)kupovnifloat (10)。 我真的不知道我做錯了什麼。 當我嘗試:

SELECT valuta, MAX(kupovni) 
FROM erste 
GROUP BY kupovni 

它是正確的?

回答

4

這似乎是一個簡單的事情,選擇kupovni字段的最高值的行。

你可以這樣做:

SELECT valuta, kupovni 
FROM erste 
ORDER BY kupovni DESC 
LIMIT 1 
+0

這工作,tywm。但我仍然感到困惑,爲什麼選擇valuta,MAX(kupovni)不... – user1511031 2012-07-09 06:18:20

+1

@Struna,請仔細閱讀這個問題,仔細看看。 OP只需要最大'kupovni'的行。即使存在具有相同最大kupovni的行,OP也只希望返回一行。表中的數據順序無關緊要,因爲查詢按'kupovni'命令排序,而不管行如何插入。波希米亞的解決方案就是獲得最大'kupovni',其中'valuta'是GBP。無論「valuta」如何,OP都希望表格中的最高行。同樣在波希米亞的解決方案中,如果你有'WHERE valuta ='GBP'',那麼他的'GROUP BY'也是不必要的。 – 2012-07-09 08:03:37

+0

@Struna,好吧,沒問題! – 2012-07-09 08:25:57

1

你非常接近!這裏有您需要什麼:

SELECT valuta, MAX(kupovni) 
FROM erste 
where valuta = 'GBP' -- optional where clause 
group by valuta 

必須將所有列「按組」不是一個aggregate function彙總。

,除非你真的需要valuta輸出,因爲你知道valuta,我這樣做:

SELECT MAX(kupovni) 
FROM erste 
where valuta = 'GBP' 

(注意,MySQL允許列從組由被省略,在這種情況下,你會得到唯一的第一個行遇到每個組)

+0

可否請你用。 「所有的列不是由聚合函數聚合 」解釋「 你必須」 組? 我在我的帖子中說過,我試過這個,但我只想要一個值,就像我所描述的那樣。我希望整行的最大功能匹配。 – user1511031 2012-07-09 05:52:12

+0

你需要告訴MySQL哪些列形成你正在尋找「最大」的「組」。見編輯的答案。 – Bohemian 2012-07-09 06:01:32

1

試試這個:

SELECT valuta, TRUNCATE(MAX(kupovni),4) 
FROM erste 
group by valuta 
0
SELECT erste.* 
    FROM (SELECT valuta, MAX(kupovni) AS maxtotal 
      FROM erste 
      GROUP BY valuta) AS dt 
INNER JOIN erste 
    ON erste.valuta= dt.valuta 
    AND erste.kupovni= dt.maxtotal 
ORDER BY items_purchased.val DESC LIMIT 1 
+0

我只需要一行作爲我的安裝結果 – user1511031 2012-07-09 05:59:56

+0

如何添加ORDER BY和LIMIT 1? – sel 2012-07-09 06:06:03

+0

限制1作品,謝謝。 – user1511031 2012-07-09 06:18:37