使用单个 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中文网其他相关文章!