2012-07-09 140 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