mysql select和MAX()

mysql select和MAX(),mysql,max,Mysql,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 列值是varchar(3)和kupovni是float(10)。 我真的不

我已经发疯了,不知道还能尝试什么。 我得到了以下数据:

表名为
erste

valuta  kupovni    
EUR     7.435   
GBP     9.2132  
然后我试试这个:

SELECT valuta, MAX(kupovni)
FROM erste
我明白了:

valuta  MAX(kupovni)
 EUR    9.213199615478516
我想得到:

GBP 9.2132
列值是
varchar(3)
kupovni
float(10)
。 我真的不知道我做错了什么。 当我尝试时:

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

它做得对吗?

你非常接近!以下是您需要的:

SELECT valuta, MAX(kupovni)
FROM erste
where valuta = 'GBP' -- optional where clause
group by valuta
您必须“分组依据”所有未按集合聚合的列

除非您真的需要输出中的
valuta
,因为您知道
valuta
,否则我会这样做:

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

(请注意,mysql允许从group by中省略列,在这种情况下,您将获得每个组遇到的唯一第一行)

您非常接近!以下是您需要的:

SELECT valuta, MAX(kupovni)
FROM erste
where valuta = 'GBP' -- optional where clause
group by valuta
您必须“分组依据”所有未按集合聚合的列

除非您真的需要输出中的
valuta
,因为您知道
valuta
,否则我会这样做:

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

(请注意,mysql允许从group by中省略列,在这种情况下,您将只获得每个组遇到的第一行)

这似乎只是为
kupovni
字段选择值最高的行的简单问题

你可以做:

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

这似乎只是为
kupovni
字段选择具有最高值的行的简单问题

你可以做:

SELECT valuta, kupovni
FROM erste
ORDER BY kupovni DESC
LIMIT 1
试试这个:

SELECT valuta, TRUNCATE(MAX(kupovni),4)
FROM erste
group by valuta
试试这个:

SELECT valuta, TRUNCATE(MAX(kupovni),4)
FROM erste
group by valuta

请您解释一下“您必须”按“所有未通过聚合函数聚合的列”分组?我在我的帖子中说我尝试过这个,但正如我所描述的,我只想要一个值作为结果。我想要max函数匹配的整行。你需要告诉mysql哪些列构成了你找到的“max”的“组”。参见编辑后的答案。请您解释一下“您必须”按“所有未通过聚合函数聚合的列”分组?我在我的帖子中说我尝试过这个,但正如我所描述的,我只想要一个值作为结果。我想要max函数匹配的整行。你需要告诉mysql哪些列构成了你找到的“max”的“组”。请参阅编辑后的答案。我只想将一行作为结果添加到我的静默中如何按顺序添加和限制1?我只想将一行作为结果添加到我的静默中如何按顺序添加和限制1?@Struna,请更仔细地重新阅读问题并仔细查看。OP只是希望该行具有max
kupovni
。即使存在具有相同max
kupovni
的行,OP也只希望返回一行。表中数据的顺序并不重要,因为无论行是如何插入的,查询都按
kupovni
排序。Bohemian的解决方案只得到了最大值
kupovni
,其中
valuta
是GBP。OP需要表中最高的行,而不管
值是多少。同样在波希米亚人的解决方案中,如果你有
其中valuta='GBP'
,那么他的
分组方式也不必要。@Struna,哦,好的,没问题!顺便说一句,我现在使用的是mysql,所以我没有意识到只能使用带有“orderby”的聚合函数。它们甚至被称为GROUP BY(聚合)函数lol。好吧,经验教训…我知道这是一个老问题,但对于@user1511031问题,关于查询为何如此,答案分为两部分:第一部分-关于他为什么得到9.213199615478516而不是所需的9.2132,请检查此链接。第二-关于他为什么得到EUR而不是GBP,是因为使用了带有聚合函数(MAX)的select,而没有GROUP BY子句,所以返回了第一行的列值。@Struna,请更仔细地阅读问题并仔细查看。OP只是希望该行具有max
kupovni
。即使存在具有相同max
kupovni
的行,OP也只希望返回一行。表中数据的顺序并不重要,因为无论行是如何插入的,查询都按
kupovni
排序。Bohemian的解决方案只得到了最大值
kupovni
,其中
valuta
是GBP。OP需要表中最高的行,而不管
值是多少。同样在波希米亚人的解决方案中,如果你有
其中valuta='GBP'
,那么他的
分组方式也不必要。@Struna,哦,好的,没问题!顺便说一句,我现在使用的是mysql,所以我没有意识到只能使用带有“orderby”的聚合函数。它们甚至被称为GROUP BY(聚合)函数lol。好吧,经验教训…我知道这是一个老问题,但对于@user1511031问题,关于查询为何如此,答案分为两部分:第一部分-关于他为什么得到9.213199615478516而不是所需的9.2132,请检查此链接。第二,关于他为什么得到EUR而不是GBP,是因为使用了带有聚合函数(MAX)的select,而没有GROUP BY子句,所以返回了第一行的列值。