使用單一 SQL 查詢高效檢索兩個單獨的資料集
此範例示範如何從單一 SQL 查詢檢索兩個不同的資料集,從而避免多個查詢的需要。 我們將使用 transactions
表(包含 id
、account_id
、budget_id
、points
和 type
欄位)進行說明。目標是獲得:
points
的總 budget_id
,其中 type
是「分配」。 points
的總 budget_id
,其中 type
是「問題」。 解:條件聚合
單一 SQL 查詢可以使用條件聚合來實現此目的:
<code class="language-sql">SELECT budget_id, SUM(CASE WHEN type = 'allocation' THEN points ELSE 0 END) AS allocated_points, SUM(CASE WHEN type = 'issue' THEN points ELSE 0 END) AS issued_points FROM transactions GROUP BY budget_id;</code>
此查詢使用 CASE
語句(或某些資料庫系統中的 IF
)來有條件地對 points
求和。 如果 type
是“分配”,則將 points
加到 allocated_points
中;否則加0。 同樣的邏輯也適用於issued_points
。 GROUP BY
子句確保為每個唯一的 budget_id
.
預期輸出:
查詢將傳回類似以下的結果集:
<code>budget_id | allocated_points | issued_points ----------|-------------------|--------------- 434 | 200000 | 100 242 | 100000 | 5020 621 | 45000 | 3940</code>
以上是如何在單一 SQL 查詢中使用條件聚合檢索兩個不同的資料集?的詳細內容。更多資訊請關注PHP中文網其他相關文章!