首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MySQL查询显示宠物没有接种过某种疫苗吗?

MySQL查询显示宠物没有接种过某种疫苗吗?
EN

Stack Overflow用户
提问于 2021-05-02 11:57:45
回答 1查看 111关注 0票数 0

我有一张桌子

petVac(宠物、疫苗)

数据如下所示:

代码语言:javascript
复制
   pet   vaccine
    P1 ​| V1
    P2 | V2 
    P3 | V3
    P1 | V3
    P2 | V4

我想知道是否可以创建一个查询,列出宠物尚未接种的宠物和疫苗。

疫苗列中列出的疫苗是唯一可用的疫苗,因此,例如,它将导致如下结果:

代码语言:javascript
复制
pet |vaccineNotTaken

P1    V2
P1    V4
P2    V1
P2    V3
P3    V1
P3    V2
P3    V4

等等。

我试着做select pet, vaccine from petVac where not exists (select distinct pet, vaccine from petVac);,但结果是一个空集。我不知道该怎么做,有没有可能?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-05-02 12:19:22

使用“日历”表方法为所有宠物和疫苗生成集合,我们可以尝试:

代码语言:javascript
复制
SELECT p.pet, v.vaccine AS vaccineNotTaken
FROM (SELECT DISTINCT pet FROM petVac) p
CROSS JOIN (SELECT DISTINCT vaccine FROM petVac) v
LEFT JOIN petVac t
    ON t.pet = p.pet AND t.vaccine = v.vaccine
WHERE
    t.pet IS NULL;

在这里,我们使用从包含所有宠物/疫苗组合的日历表到您的petVac表的左反联接,只保留没有数据的对。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67352858

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档