为身份查找单行

时间:2014-01-29 22:40:55

标签: mysql duplicates

我有一个具有多个身份值的表,我想为每个身份找到一行,其中日期字段是最新的,然后如果仍然有重复,只需选择id最低的那一行。 / p>

我的表看起来像是这样的:

UniqueID | CustomerId | Name | Address | InspDate
1            1           Bob    123       2013/08/05 00:00:00
2            1           Bob    123       2013/08/05 00:00:00
3            1           Bob    123       2013/03/01 00:00:00

所以我只希望uniqueid为1的行显示在此示例中。

此外,我想将其限制为仅在过去一年内完成激励的客户,如果可能的话。

1 个答案:

答案 0 :(得分:0)

SELECT t.*
FROM
  yourtable t INNER JOIN (
    SELECT MIN(UniqueID) as Min_ID
    FROM
      yourtable t1 INNER JOIN (SELECT CustomerID, MAX(InspDate) Max_date
                               FROM yourtable
                               GROUP BY CustomerID) m
      ON t1.CustomerID=m.CustomerID AND t1.InspDate=m.Max_date
    GROUP BY t1.CustomerID) mi
  ON t.UniqueID = mi.Min_ID

请参阅小提琴here