我有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
答案 0 :(得分:0)
只需订购您的表,然后按ID分组
SELECT
*
FROM
(
SELECT
*
FROM
table1
ORDER BY
cont_details_id ASC, gate_in DESC
) origin
GROUP BY
origin.cont_details_id
立即将<{1}}替换为您的结果