我想知道如何在SQL映射器中获得所有结果,包括Count值为0。
我在我的javascript中发送了ajax请求。
var programGoals = ['A', 'B', 'C', 'D'];
(数据的计数值为A=3、B=2、C=1、D=0。我想得到所有的结果,包括D的0)
这是myBatis映射器文件。(使用mysql)
<select id="countCardsWithProgramGoal" resultType="java.util.HashMap"
parameterType="java.util.HashMap">
select pgoal, count(*) as count
from PROG
where pgoal in
<foreach collection="programGoals_list" item="item" index="index"
separator="," open="(" close=")">
#{item}
</foreach>
group by pgoal;
</select>
它只返回A、B、C结果,不包括计数结果为0的D。如何获取所有值?提前谢谢。干杯。
发布于 2018-08-09 03:41:24
如上所述,在数据库之外可能更容易做到这一点,但如果你确实想在数据库中做到这一点,你可以:
union all
根据传递的目标列表构造一个结果集,然后查询将如下所示:
<select id="countCardsWithProgramGoal" resultType="java.util.HashMap"
parameterType="java.util.HashMap">
select g.pgoal, count(*) as count
from (
SELECT
<foreach collection="programGoals_list" item="item" index="index"
separator=" UNION ALL SELECT " >
#{item} pgoal
</foreach>
) as g
left join PROG p on p.pgoal = g.pgoal
group by pgoal;
</select>
https://stackoverflow.com/questions/51744775
复制相似问题