我不是真正的后端开发人员,所以我对 sql 的经验很少。我需要从表中过滤“每月购买”,客户将购买相同的交易产品以在不同的日期发货。
假设我在桌子上有这个:
transactionID | deliveryDate
------------- | ------------
1 | 2013-11-24
1 | 2013-11-24
2 | 2013-11-26
3 | 2013-11-10
3 | 2013-11-17
3 | 2013-11-24
4 | 2013-11-10
4 | 2013-11-10
4 | 2013-11-17
4 | 2013-11-17
我想要这个结果:
transactionID | deliveryDate
------------- | ------------
3 | 2013-11-20
3 | 2013-11-22
3 | 2013-11-24
4 | 2013-11-10
4 | 2013-11-10
4 | 2013-11-17
4 | 2013-11-17
交易 3 和 4 是唯一符合我标准的交易,因为交易 1,而同一交易中有多个购买,交货日期是相同的。交易 2 也不适合我需要购买多件商品。所以,基本上我需要选择transactionID的计数不止一个的每一行,但只有在还有不止一个不同的deliveryDate的地方。
到目前为止,我尝试的是:
SELECT *
FROM myTable
WHERE `transactionID` IN
( SELECT `transactionID`
FROM `myTable`
GROUP BY `transactionID`
HAVING COUNT(*) > 1
)
ORDER BY `transactionID`
我知道我只是在同一笔交易中有多个购买时进行过滤,但我真的不知道如何遵循这一点。此外,由于有更多的列,这个查询非常慢,所以我认为可能有一个更好的方向,你们中的一些人可以指出我。
谢谢!