(mysql)子查询返回多行

(mysql)子查询返回多行,mysql,Mysql,我正试图以升序获取每个地区(“凯卡马坦”)的“jml_pddk_miskin”总数。但我得到的错误是“子查询返回多行” 这是我的疑问: select mkec.id AS id,mkec.nama AS kecamatan,rpb.tahun AS tahun, ifnull((select sum(rpb.jml_pddk_miskin) from rekap_penduduk_bps rpb join master_kelurahan mkel on m

我正试图以升序获取每个地区(“凯卡马坦”)的“jml_pddk_miskin”总数。但我得到的错误是“子查询返回多行”

这是我的疑问:

select 
mkec.id AS id,mkec.nama AS kecamatan,rpb.tahun AS tahun,
ifnull((select sum(rpb.jml_pddk_miskin) 
        from rekap_penduduk_bps rpb 
        join master_kelurahan mkel on mkel.id = rpb.id_kelurahan 
        where 
        mkel.id_kecamatan = mkec.id 
        and rpb.id_kelurahan = mkel.id 
        group by rpb.id ),0) AS total_miskin 
from master_kecamatan mkec 
join rekap_penduduk_bps rpb 
group by mkec.nama 
order by mkec.id
这是上述查询的结果:

我想要这样的结果。。。 您的内部查询

select sum(rpb.jml_pddk_miskin) 
from rekap_penduduk_bps rpb 
join master_kelurahan mkel on mkel.id = rpb.id_kelurahan 
where 
mkel.id_kecamatan = mkec.id 
and rpb.id_kelurahan = mkel.id 
group by rpb.id
显然返回了不止一行(通过
GROUPBY
子句)。

试试这个

   SELECT mkec.id AS id,mkec.nama AS kecamatan,rpb.tahun AS tahun,IFNULL((SELECT SUM(rpb.jml_pddk_miskin) 
FROM (rekap_penduduk_bps rpb JOIN master_kelurahan mkel ON mkel.id = rpb.id_kelurahan) WHERE 
mkel.id_kecamatan = mkec.id AND rpb.id_kelurahan = mkel.id GROUP BY rpb.id HAVING rpb.id_kelurahan = mkel.id ),0)
 AS total_miskin FROM master_kecamatan mkec JOIN rekap_penduduk_bps rpb ON mkec.id= rpb.id_kelurahan GROUP BY mkec.nama ORDER BY mkec.id

如何修复该查询..:(rpb.id是“rekap_penduduk_bps”表的id。在该表中有来自表“master_kelurahan”的外键,并且master_kecamatan在表master_kelurahan中有id。您能在..biger query missed
ON
子句中更新模式吗#justin,您能帮我解决该查询吗?这是结果”“having子句”中的未知列“mkel.id:”(@gierg)请更新您的表结构,这样我们就很容易给出正确的结果