2012-09-25 347 views
2

我有这些记录MySQL查询选择复杂MAX()

enter image description here

我要的是平衡找到最大值,并以相应的名称进行检索(我有外键的用户ID == balanceID) ,例如在这种情况下,它将是“name2 | 2000”。 这里有任何Mysql'ist谁可以告诉我如何做到这一点?

我想类似的东西,以

SELECT MAX(b.balance), i.name 
from balance b, usr i 
WHERE i.userid=b.balanceID; 

但它不从均衡分配正确的名称MAX值。任何帮助?]

+0

似乎有没有共同的区域(对连接)您的表之间,也就是我看不到连接的平衡用户的一种方式。我认为你需要澄清你的设计。 – user1666959

+0

他已经说过了,userid == balanceID – CrazyCasta

回答

3

您需要在查询中添加GROUP BY子句。

SELECT MAX(b.balance) as Maximum_Balance, i.name 
FROM  balance b INNER JOIN usr i 
      ON i.userid=b.balanceID 
GROUP BY i.name; 

或者你只想找到highrd balance的人吧?

SELECT b.balance as Maximum_Balance, i.name 
FROM  balance b INNER JOIN usr i 
      ON i.userid=b.balanceID 
WHERE b.balance = (SELECT MAX(balance) FROM balance) 

SQLFiddle Demo

+0

对,非常感谢,这就是我正在寻找:))) –

+0

@Omegawow欢迎您! –

+0

humm,我是这个网站的新手,我该怎么做?:D –