使用多个WHERE子句检索不同的数据
在SQL中,可以使用WHERE子句来过滤特定的行,从而定制从表中检索数据的方式。这个问题提出了从同一张表中提取两个不同的数据集的挑战,每个数据集都满足不同的WHERE子句。
示例表“transactions”存储财务交易的记录,这些记录以其ID、账户ID、预算ID、获得的积分和交易类型为特征。任务是计算每个唯一预算ID的分配积分总和和发放积分总和。
为此,可以构造一个单个SQL查询,该查询结合了必要的WHERE子句。以下查询实现了所需的结果:
<code class="language-sql">SELECT budget_id, SUM(CASE WHEN type = 'allocation' THEN points ELSE 0 END) AS allocated, SUM(CASE WHEN type = 'issue' THEN points ELSE 0 END) AS issued FROM transactions GROUP BY budget_id</code>
此查询使用CASE WHEN语句根据交易类型有条件地对积分求和。对于每个预算ID,查询计算与“allocation”类型关联的积分总和,并将其存储在“allocated”列中。类似地,它计算“issue”类型的积分总和,并将其存储在“issued”列中。通过按预算ID分组结果,查询生成预期的结果集,其中包含每个预算的分配积分和发放积分的单独列。
此查询演示了SQL在组合WHERE子句以从表中检索特定数据子集方面的灵活性,使其成为执行复杂数据检索任务的强大工具。
以上是单个 SQL 查询如何根据多个 WHERE 子句条件检索不同的和?的详细内容。更多信息请关注PHP中文网其他相关文章!