2012-01-18 81 views
2
SELECT id,name,SUM(`lsa`) AS lst FROM 
    table_a AS sn, 
    table_b AS fb 
WHERE sn.uid=fb.uid 
    AND COUNT(`lsa`)=6 
GROUP BY sn.uid 
ORDER BY SUM(`lsa`) 

我有一个像这样的查询,显然AND COUNT(lsa)=6位是无效的语法。我很迷茫。COUNTing有多少行GROUPED BY

我想实现的是一个清单,由lsa总和下令,由uid分组,只有有6项为UID,即在“组”。我该怎么做?

回答

3

它是有效的聚集过滤,但需要进入HAVING条款,而不是WHERE所以使用

SELECT id, 
     name, 
     SUM(`lsa`) AS lst 
FROM table_a AS sn 
     JOIN table_b AS fb 
     ON sn.uid = fb.uid /*Using Explicit Join syntax*/ 
GROUP BY sn.uid,   /*And avoiding MySQL GROUP BY extension*/ 
      id, 
      name 
HAVING COUNT(`lsa`) = 6 
ORDER BY SUM(`lsa`) 

代替。

+0

'你可以在10分钟内接受答案' – 2012-01-18 17:54:26