sql - SQL - 查找所有不库存 2003 年 1 月 1 日之后生产的产品的商店
问题描述
我想查找所有不库存 2003 年 1 月 1 日之后生产的产品的商店。
我目前拥有所有名称不同的商店。一些在 2003 年 1 月 1 日之后制造的库存产品,一些在此之前制造的库存产品和一些在之前和之后制造的库存产品。
我试过的是
SELECT DISTINCT s.name FROM Store s
WHERE s.pcode NOT IN (
SELECT s2.pcode
FROM StockInfo s2
WHERE s2.productRelease BETWEEN "2003-01-01" AND NOW()
)
但是,这将返回在指定日期之前和之后生产产品的商店和仅在指定日期之前生产产品的商店。
有人能帮我解决这个问题吗?
这些表的结构是:
商店:
ID | name
1 | Coles
2 | Woolworths
等等
股票信息:
ID | name | pcode | productRelease
1 | Coles | 1 | "2010-03-05"
1 | Coles | 3 | "2001-01-01"
2 | Woolworths | 2 | "2003-01-01"
等等
解决方案
使用not exists
:
SELECT s.name
FROM Store s
WHERE NOT EXISTS (SELECT 1
FROM StockInfo si
WHERE si.id = s.id AND
si.productRelease >= '2003-01-01'
);
大概id
是商店的代码。这应该被称为更具描述性的东西,例如storeId
,如果您可以控制数据模型。同样,name
不应在store
和中重复stockInfo
。
此外,SELECT DISTINCT
对于此查询或您的版本,应该不是必需的。
推荐阅读
- openshift - Openshift CronJob 在概览屏幕上可见
- php - 是否可以在 CakePHP 3 中使用具有可包含行为的 find('list')?
- java - 如何检测不止一次的点击?
- java - HashMap 的 put 和 add 的区别
- swift - 为什么无法触发 String.publisher?
- hive - 当 Hive 服务重新启动时,Hive Table 的独占锁不会自动释放
- grpc - 具有多线程客户端的 gRPC 双向流处理
- mongodb - 数组大小 gt 0 的匹配操作在聚合 MongoDB 中不起作用
- javascript - 悬停在标记上时不要更改鼠标图标
- python - 如何在 Python 中使用 matplotlib 优雅地绘制大量子图?