我已经在谷歌漫游了几个小时了。
有两张桌子:
AccountTable
ID | AccountID | OrderID
OrderTable
ID | OrderID | OrderStatus
OrderStatus 的值可以是 1、2、3、4,其中 4 是完成状态。
在订单表中,随着订单状态的更新,将添加多行。因此,对于一个已完成的订单,您将在 OrderTable 中有 4 行分别具有 1、2、3 和 4 状态。
一个账户可以有多个订单。
我想找到所有订单都已完成的帐户。
我发现了这么多:
select * from AccountTable
INNER JOIN OrderTable
ON AccountTable.OrderID = OrderTable.OrderID
AND OrderTable.OrderStatus = 4
这将选择至少有一个订单处于已完成状态的帐户。
但这不会涵盖当一个订单完成而同一帐户的另一个订单未完成的情况。那时我不想选择帐户。
编辑:我只是想显示一些数据以使这一点更清楚:
AccountTable
1 | Name1 | Order1
2 | Name1 | Order2
3 | Name2 | Order3
4 | Name2 | Order4
OrderTable
1 | Order1 | 1
2 | Order1 | 2
3 | Order1 | 3
4 | Order2 | 1
5 | Order2 | 2
6 | Order2 | 3
7 | Order2 | 4
8 | Order3 | 1
9 | Order3 | 2
10 | Order3 | 3
11 | Order3 | 4
12 | Order4 | 1
13 | Order4 | 2
14 | Order4 | 3
15 | Order4 | 4
我只想检索 Name2 而不是 Name1。