首页 >数据库 >mysql教程 >如何在单个 MySQL 语句中有效聚合不同表中的多个列?

如何在单个 MySQL 语句中有效聚合不同表中的多个列?

Susan Sarandon
Susan Sarandon原创
2025-01-21 11:12:10592浏览

How to Efficiently Aggregate Multiple Columns from Different Tables in a Single MySQL Statement?

使用单个 MySQL 查询整合多个表中的数据

最初,使用多个子查询聚合来自各个表的数据会产生不准确的结果,只有第一列显示正确的值。 为了解决这个问题,需要更有效的方法。

最有效的解决方案涉及单个表查询中的条件聚合。 这种方法避免了多个子查询的限制并产生准确的结果。 以下查询演示了此技术:

<code class="language-sql">SELECT DAY_IN, COUNT(*) AS arr,
       SUM(IF(PAT_STATUS LIKE '%ong%', 1, 0)) AS ONG1,
       SUM(IF(PAT_STATUS LIKE '%rtde%', 1, 0)) AS RTED,
       SUM(IF(PAT_STATUS LIKE '%pol%', 1, 0)) AS POL1,
       SUM(IF(PAT_STATUS LIKE '%para%', 1, 0)) AS para
FROM t_hospital
WHERE DAY_IN BETWEEN @start_check AND @finish_check
  AND RES_DATE BETWEEN @start_res AND @finish_res
  AND ID_daily_hos = @daily_hos
GROUP BY DAY_IN</code>

此查询使用 IF() 函数根据 PAT_STATUS 列有条件地计算出现次数。 每行仅计数一次,构成单个聚合列。然后,SUM() 函数对每个 DAY_IN.

的这些条件计数进行总计。

这种单查询方式提供了一种简洁、准确的聚合同表不同列数据的方法,解决了原来多子查询方式结果不准确的问题。

以上是如何在单个 MySQL 语句中有效聚合不同表中的多个列?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn