gpt4 book ai didi

mysql - 如何在Mysql中根据日期过滤重复的行?

转载 作者:太空宇宙 更新时间:2023-11-03 11:59:38 27 4
gpt4 key购买 nike

我有两个表

表 1 名称:depot_tracking

     -------------------------------------------------
depot_tracking_id | cont_details_id | date |
-------------------------------------------------
1 | 4 | 05-02-2015 |
2 | 1 | 25-03-2015 |
3 | 3 | 05-04-2015 |
4 | 2 | 15-02-2015 |
5 | 3 | 05-05-2015 |
6 | 2 | 23-03-2015 |
7 | 1 | 15-05-2015 |
--------------------------------------------------

第二个表名:cont_details

      -----------------------------------
cont_no | cont_details_id |
-----------------------------------
aa | 1 |
bb | 2 |
cc | 3 |
dd | 4 |
ee | 5 |
ff | 6 |
gg | 7 |
--------------------------------------

现在我想合并这两个表并过滤重复的行,更重要的是我必须过滤具有旧日期的行。这正是我期待的输出

     ---------------------------------------------------------
depot_tracking_id | cont_details_id | date | cont_no
----------------------------------------------------------
1 | 4 | 05-02-2015 | dd
5 | 3 | 05-05-2015 | cc
6 | 2 | 23-03-2015 | bb
7 | 1 | 15-05-2015 | aa
---------------------------------------------------------

请有人帮我过滤重复的行(过滤具有旧日期行的行)谢谢

ORDER BY (str_to_date(date,'%d-%m-%Y')) DESC LIMIT 1 

通过使用这段代码,我可以将日期列 (DD-MM-YYYY) 更改为 mysql 格式的日期

但不知道如何根据日期过滤重复的行

最佳答案

因为您的所有字段值都可以通过使用聚合函数可靠地确定,所以您只需要一个简单的聚合查询。

select max(d.depot_tracking_id), c.cont_details_id, max(d.date), c.cont_no
from depot_tracking d
inner join cont_details c
on c.cont_details_id = d.cont_details_id
group by c.cont_details_id

为了让它起作用,您的日期字段必须是实际的日期类型,而不是字符串类型。或者如果它们是字符串类型,则它们需要是 'yyyy-mm-dd' 格式,而不是 'dd-mm-yyyy'。

demo here

更新

由于您似乎无法使用损坏的日期格式 - 此查询将起作用:

select max(d.depot_tracking_id), c.cont_details_id, max(str_to_date(d.date,'%d-%m-%Y')), c.cont_no
from depot_tracking d
inner join cont_details c
on c.cont_details_id = d.cont_details_id
group by c.cont_details_id

demo

关于mysql - 如何在Mysql中根据日期过滤重复的行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30105515/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com