我有这样的桌子
userid visitorid time 1 10 2009-12-23 1 18 2009-12-06 1 18 2009-12-14 1 18 2009-12-18 1705 1678 2010-01-24 1705 1699 2010-01-24 1705 1700 2010-01-24 1712 1 2010-01-25 1712 640 2010-01-24 1712 925 2010-01-25 1712 1600 2010-01-24 1712 1630 2010-01-25 1712 1630 2010-01-24 1713 1 2010-01-24 1713 1 2010-01-23
我想执行一个查询,以除去所有最新的重复项。我希望你有个主意吗?
例如,查询后的表必须是这样的
userid visitorid time 1 10 2009-12-23 1 18 2009-12-18 1705 1678 2010-01-24 1705 1699 2010-01-24 1705 1700 2010-01-24 1712 1 2010-01-25 1712 640 2010-01-24 1712 925 2010-01-25 1712 1600 2010-01-24 1712 1630 2010-01-25 1713 1 2010-01-24
Delete from YourTable VersionA where VersionA.Time NOT IN ( select MAX( VersionB.Time ) Time from YourTable VersionB where VersionA.UserID = VersionB.UserID and VersionA.VisitorID = VersionB.VisitorID )
语法可能需要调整,但是应该做到这一点。此外,您可能希望将子查询预查询到其自己的表FIRST中,然后对该结果集运行DELETE FROM。