You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何合并多条查询不同国家疫苗接种数据的SELECT语句?

合并查询的两种实现方案

根据你需要的结果格式,可以选择以下两种写法:

方案1:长表结构输出(推荐)

如果可以接受每行存储「日期+国家+对应接种数」的结构化结果,直接用IN过滤即可,性能最优、代码最简洁:

SELECT
    date,
    location AS country,
    people_fully_vaccinated
FROM vaccinations
WHERE location IN ('Australia', 'United States', 'France', 'Israel');

方案2:宽表结构输出(按国家分列)

如果需要和你原来的多查询结果一致,同一个日期下不同国家的接种数单独成列,用条件聚合实现:

SELECT
    date,
    MAX(CASE WHEN location = 'Australia' THEN people_fully_vaccinated END) AS Australia,
    MAX(CASE WHEN location = 'United States' THEN people_fully_vaccinated END) AS `United States`,
    MAX(CASE WHEN location = 'France' THEN people_fully_vaccinated END) AS France,
    MAX(CASE WHEN location = 'Israel' THEN people_fully_vaccinated END) AS Israel
FROM vaccinations
WHERE location IN ('Australia', 'United States', 'France', 'Israel')
GROUP BY date
ORDER BY date ASC;

补充说明

  • 条件聚合写法中如果某个日期对应国家没有上报数据,对应列会返回NULL,符合实际业务逻辑
  • 不推荐用多表JOIN拼接的方式实现,若存在国家缺日期的情况会导致结果漏行,条件聚合的兼容性和稳定性更高
  • 如果你使用的数据库支持PIVOT语法(如SQL Server、Oracle、PostgreSQL 15+),也可以用PIVOT语法实现,底层逻辑和上述条件聚合一致

内容的提问来源于stack exchange,提问作者Jacob

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.28 07:48:01