2012-05-05 137 views
1
SELECT plaka, party_id, sum(inf) i 
    FROM party_sehir 
GROUP BY party_id, plaka 

具有最大值这是我的子查询的结果是:MySQL的子查询和子查询

plaka party_id i 
34  1   42 
34  2   9 
35  1   11 
35  2   26 

从这些结果我想每一个plaka和行party_id的最大i,这样:

plaka party_id i 
34  1   42 
35  2   26 

我的意思是每个plaka的最大值。我也试过:

SELECT * 
    FROM (SELECT plaka, party_id, sum(inf) i 
      FROM party_sehir 
      GROUP BY party_id, plaka) t1 
GROUP BY plaka 
HAVING i >= max(i) 

它没有工作;任何人都可以提供帮助吗?

谢谢

回答

2

它需要一个较长的查询,像

select plaka,party_id, i 
from 
(SELECT plaka,party_id, sum(inf) i FROM party_sehir 
GROUP BY party_id, plaka) sum_group 
where (i,plaka) in (
SELECT max(i), plaka 
FROM (SELECT plaka,party_id, sum(inf) i FROM party_sehir 
GROUP BY party_id, plaka) t1 group by plaka) 
+0

返回空查询 –

+0

尝试组编辑,会你再试一次? – hkutluay

0

请通过您的解决方案

SELECT plaka ,party_id , max(`i`) FROM `party_sehir` GROUP BY `plaka` 

OR

SELECT * FROM `party_sehir` AS s1 WHERE s1.i = (SELECT max(`i`) FROM party_sehir AS 
    s2 WHERE s1.plaka = s2.plaka) GROUP BY `plaka`