我希望在合并两张表时获得犯罪总数。 但我想计算每个犯罪的数字,并显示那些未被提交为0的值,我如何使用mysql实现这一点? 我的代码:
SELECT count(offense_id)
AS totalnumber,(
select offense_description
from offense
where offense.offense_id = case_crime.offense_id
)as crimeName
from case_crime
group by offense_id
答案 0 :(得分:0)
您正在寻找LEFT OUTER JOIN
像
这样的东西SELECT offense.offense_id
, offense_description
, count(case_crime.case_id) as Total_Number
from offense
LEFT OUTER JOIN case_crime ON offense.offense_id = case_crime.offense_id
group by offense.offense_id
我承认,我是一个TSQL人员,因此当没有使用指定攻击的案例时,我会处理COUNT(*)返回null:ISNULL(COUNT(case_crime),0)
其他SQL变体可能会使用COALESCE( COUNT(case_crime), 0)
答案 1 :(得分:0)
要获取所有攻击列表和已注册犯罪的数量,您需要在两个表之间使用LEFT JOIN ....类似这样的SQL:
SELECT a.offense_id, a.offense_description, count(b.crime_caseid) as total
FROM offense a LEFT JOIN case_crime b
ON a.offense_id = b.offense_id
group by a.offense_id;
Here is a SQLFiddle玩弄:))