首页 > 解决方案 > 如何选择特定列上不匹配的行(sqlite)

问题描述

好的,希望我的表格可以正常工作,我以前从未在这里发布过,但我试图从这张表格中找出谁接受了不止一种疫苗的剂量(所有细节都是虚拟数据,不是真实的人或身份证号码等)

NHI_id 名称 名字 疫苗名称 vac_date
16120428 克莱顿 沼泽 通讯 2021-03-20
16120428 克莱顿 沼泽 詹森 2021-04-01
16120430 狄龙 理查兹 通讯 2021-03-20
16120430 狄龙 理查兹 通讯 2021-04-10
16120432 吉赛尔 英里 詹森 2021-04-15
16120433 泰勒 巴克利 通讯 2021-03-20
16120434 克米特 格林 詹森 2021-04-15
16120435 哈里森 多尔西 詹森 021-04-15

所以克莱顿·马奇是唯一一个接种过不同剂量疫苗的人,我试图通过询问来证明这一点。我通过以下查询获得了上表:

SELECT NHI_id, fname, lname, vaccine_name, vac_date
FROM Patients
NATURAL JOIN Vaccinations
NATURAL JOIN Vaccines

我已经能够查询所有接种过两剂任何疫苗的人,但我无法将其范围缩小到不同剂量的疫苗。

标签: sqlsqlite

解决方案


就像是

SELECT NHI_id, fname, lname
FROM Patients
NATURAL JOIN Vaccinations
NATURAL JOIN Vaccines
GROUP BY NHI_id, fname, lname
HAVING count(DISTINCT vaccine_name) > 1

应该这样做。


推荐阅读