sql - 选择所有不连续出现在 SQL 中的人
问题描述
我的表格 Persons 包含以下内容:
year name
2015 John
2016 John
2017 John
2015 Mary
2015 Jennifer
2016 Jennifer
2015 Lisa
2016 Lisa
2017 Lisa
我怎样才能得到所有这些年来没有连续出现的人?
答案应该是:
2015 Mary
2015 Jennifer
2016 Jennifer
解决方案
一种方法是按名称聚合,然后断言给定名称的不同年数不等于整个表中的总不同年数。
SELECT t1.name
FROM yourTable t1
INNER JOIN
(
SELECT name
FROM yourTable
GROUP BY name
HAVING COUNT(DISTINCT year) < (SELECT COUNT(DISTINCT year) FROM yourTable)
) t2
ON t1.name = t2.name
ORDER BY
t1.name,
t1.year;
演示
推荐阅读
- reactjs - 如何在客户端隐藏firebaseConfig信息
- javascript - 如何从 RxJS combineLatest 中删除瞬态事件与 NGRX 存储源 observable
- git - git 中是否有可能只忽略文件中的特定更改,例如数字?
- angular - 当资源部件发生变化时如何停止自动重新加载?
- c++ - c++ 将 typedef 与 LegacyRandomAccessIterator 一起使用
- dax - DAX-如何实现每个类别的年初至今?
- android - 如何将我的 Android 应用程序与 mongodb.atlas 连接?
- android - 如何为 App Store 添加关联域?- 用于 App Store Connect 的 app-ads.txt 文件
- rpm-spec - 如何在 rpm 规范中自动创建许多子包
- android - 我得到了 java.lang.IllegalStateException: 更新 androidX 库时没有活动错误