sql - 当列不早于特定日期时选择唯一名称
问题描述
我正在尝试在这里进行原始查询,我不知道这是否可能。
这是表架构:
表名:army_attack
列:
army_name varchar
created_at date
attacked_to varchar
first_attacked_at date
我想检索第一次攻击是在 1885 年的所有军队名称。
我可以简单地做:
select distinct(army_name)
from army_attack
where first_attacked_at between '1885-1-1' and '1885-12-31'
但是,如果这支军队在 1885 年之前也发动了袭击呢?是否有任何窗口功能可以做到这一点?或任何可能有帮助的东西?
解决方案
使用子查询提取在 1884 年之前第一次进攻的军队
SELECT DISTINCT(army_name) from army_attack
WHERE first_attacked_at BETWEEN '1885-1-1' and '1885-12-31'
and army_name not in
(select army_name from army_attack where first_attacked_at <='1884')
推荐阅读
- c++ - 我试图找到具有给定顺序和预顺序的二叉树我正在遵循递归方法,但我得到了错误的输出
- java - DAO 类属于 Web 应用程序的 3 层架构中的哪一层?
- flutter - 在 singlechildscrollview 列中调用有状态小部件后,颤动中的 RenderFlex 错误
- azure - Azure 相当于将 Function 保护到特定角色
- c# - 内含集合的地图模型
- ios - 如何捕获 iOS 屏幕键盘按键和按键释放事件
- windows - 从命令行设置 Windows 10 HDR 开/关或 HDR/SDR 平衡?
- r - 创建具有四个角坐标的矩形多边形 shapefile
- r - R,dplyr:当每个组有多行而不创建新的数据框时,有没有办法添加组的顺序?
- android - 注册页面上的登录按钮直接进入 MainActivity 而无需实际登录