sql 查询优化:动态统计地市结果状态
在 mysql 查询中,我们经常需要统计不同地市的结果状态。传统的方法是在 where 或 group by 子句中写死每个地市 id,但当涉及大量地市时,这种方法会变得冗长且难以维护。
我们可以使用 foreach 循环来动态生成要统计的地市列表。这使我们能够根据需要轻松地添加或删除地市。
修改后的查询如下:
# 使用foreach代替写死代码,通过传参数变更要统计的城市 <foreach collection="citys" item="city"> count(case when city = #{city.id} then city end ) as city.name, </foreach>
登录后复制
其中,citys 是一个包含地市 id 和名称的集合,city.id 是城市 id,city.name 是城市名称。
示例:
SELECT result_status, <foreach collection="citys" item="city"> COUNT(CASE WHEN city = #{city.id} THEN city END ) AS city.name, </foreach> FROM sys_patrol WHERE YEAR ( start_patrol_time ) = '2021' GROUP BY result_status
登录后复制
通过使用 foreach 循环,我们避免了写死地市 id 的问题,使查询更加灵活、可维护。
© 版权声明
文章版权归作者所有,未经允许请勿转载。
【小浪云服务商 - 服务器12元起 - 挂机宝5元起】
THE END
暂无评论内容