2016-03-01 77 views
0

我想做一个子查询来找出两个信息。这里是我得到Mysql subquery group by error

SELECT b.boroughName, SUM(c.crimeCount), 
    (SELECT SUM(c.crimeCount) 
    FROM FYP_Borough b JOIN FYP_Crime c on b.boroughID=c.boroughID 
    WHERE offenceID=8 
    GROUP BY boroughName) AS DrugUse 
FROM FYP_Borough b JOIN FYP_Crime c ON b.boroughID=c.boroughID 
GROUP BY b.boroughName 

此代码是我得到的错误: 子查询返回多个1行

我通过boroughName想组,否则它给我的每个字段的值相同。我该怎么做呢?

回答

0
SELECT b.boroughName, SUM(c.crimeCount), 
    SUM(CASE WHEN offenceID=8 THEN c.crimeCount ELSE 0 END) 
AS DrugUse 
FROM FYP_Borough b JOIN FYP_Crime c ON b.boroughID=c.boroughID 
GROUP BY b.boroughName 
+0

非常感谢你的工作。 Case声明如何工作? – armze3

+0

你好。 情况 CONDITION1然后表达式 然后CONDITION2时当表达式2 ..... 别的expressionN 端 它评估,并且如果相应的条件为真返回表达。在这个查询中,它针对每一行查看c.crimeCount或零来评估。然后根据您的逻辑进行分组。 –