首頁 >資料庫 >mysql教程 >如何在單一 MySQL 語句中有效聚合不同表中的多個欄位?

如何在單一 MySQL 語句中有效聚合不同表中的多個欄位?

Susan Sarandon
Susan Sarandon原創
2025-01-21 11:12:10589瀏覽

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