我不是真正的后端开发人员,所以我对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`
我知道我只是在同一笔交易中有多个购买项时进行过滤,但是我真的不知道该如何遵循.此外,由于有更多的列,所以此查询的速度非常慢,因此我认为某些人可能会指出一个更好的方向.
谢谢!