首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Db2/sql:使用join选择和更新最老的条目

Db2/sql:使用join选择和更新最老的条目
EN

Stack Overflow用户
提问于 2020-11-22 21:57:52
回答 1查看 126关注 0票数 0

如果给它两个表:

  • Car (字段: c.id,c.name,c.plate)

  • 停车场(字段: p.position、p.id、p.date、p.time)

当一辆汽车进入停车区时,将在桌子上“停车”p.id (通常是空的‘具有相同条目的c.id’)和p.date (格式: 2020-11-23,通常为null 0001-01-01)和p.time (格式: 08.00.59,通常为空00.00.00)。

有时I系列节目预留1辆车以上1个停车位。

然后,我必须找出这辆车最古老的条目,比字段p.id‘’空。只允许1辆车预留1个停车位。

如何将所有最老的p.id停车场字段更新为“”?只有最年轻的条目(根据p.date和p.time的说法可以存在)?

示例:

代码语言:javascript
运行
复制
C.id c.name c.plate
3643 volvo. H-FZ25

P.position p.id  p.date.     P.time
R154       3643  2020-11-22  04.34.44
R154       3643  2020-11-22  05.34.44
R154       3643  2020-11-22  07.34.44

只有最后一个条目可以保留,对于较旧的停车表条目,应清除字段p.id (‘')、p.date和p.time。如何选择/显示这些重复的条目并更新它们?

对不起我的英语不好。谢谢你的快速帮助GMB。

但是现在我遇到了这样的情况,两个位置被同一辆车堵住了,但是有相同的日期和时间(相同的秒)。除了重复条目的最后一行/位置外,我如何删除这辆车的所有位置(但只有在重复的日期和时间相同的情况下)?

谢谢..

EN

回答 1

Stack Overflow用户

发布于 2020-11-22 22:00:47

如果我没听错的话:

代码语言:javascript
运行
复制
update parking p
set pid = null, pdate = null, ptime = null
where exists (  
    select 1
    from parking p1 
    where 
        p1.pid = p.pid 
        and (p1.date > p.date or (p1.date = p.date and p1.time > p.time))
)

基本上,这会将列设置为nulls,用于同一pid存在最近行的行。如果需要空字符串,则只需相应地更改set子句即可。

请注意,将日期和时间存储在两个单独的列中会使逻辑变得不必要地复杂。如果这些是字符串(就像它们看起来的那样),我们也可以将这个条件表述为:

代码语言:javascript
运行
复制
and p1.date || p1.time > p.date || p.time
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64960029

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档