如何在 Mysql 中使用 DATE 过滤重复的行

how to filter repeated rows using DATE in Mysql

我有 4 个表,我正在使用 LEFT JOIN 合并表并且一切正常。

这是我正在使用的查询

   SELECT cont_details.* FROM depot_tracking
   LEFT JOIN depot_details
   ON depot_tracking.depot_details_id = depot_details.depot_details_id
   LEFT JOIN cont_details 
   ON depot_tracking.cont_details_id = cont_details.cont_no
   WHERE depot_details.depot_city = "maa"
   AND depot_tracking.status = "0" AND depot_tracking.gate_out =""

现在我就这样出去了!

--------------------------------------------
 cont_details_id  |    gate_in  | cont_no
--------------------------------------------
       1          | 05-05-2015  |  dd
       1          | 13-04-2015  |  cc
       2          | 23-03-2015  |  bb
       3          | 15-05-2015  |  aa
       1          | 21-02-2015  |  dd
       3          | 25-05-2015  |  cc
       2          | 30-03-2015  |  bb
       4          | 15-05-2015  |  aa

现在我想根据 depot_tracking.gate_in 列过滤重复的行。

在这张图片中有 con_details_id (1) 现在来两次我只想要 19-04-2015(最后日期)最大日期,其余的必须是过滤器,对所有 2、3、 4 ,5 等..,

问题是我无法将 gate_in 列更改为日期格式,所以我曾经将列更改为 STRING TO DATE FORMATE 使用下面的查询

(str_to_date(d.gate_in,'%d-%m-%Y')) 

所以请有人帮我过滤重复的行(只显示最大日期行)

现在期待输出

--------------------------------------------
 cont_details_id  |    gate_in  | cont_no
--------------------------------------------
       1          | 05-05-2015  |  dd
       3          | 25-05-2015  |  cc
       2          | 30-03-2015  |  bb
       4          | 15-05-2015  |  aa

只需订购您的 table 然后按 id

分组
SELECT
  *
FROM
  (
    SELECT
      *
    FROM
      table1
    ORDER BY
      cont_details_id ASC, gate_in DESC
  ) origin
GROUP BY
  origin.cont_details_id

立即将 table1 替换为您的结果

SQL Fiddle: http://sqlfiddle.com/#!9/b90d5/1/0