如果给它两个表:
当一辆汽车进入停车区时,将在桌子上“停车”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的说法可以存在)?
示例:
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。
但是现在我遇到了这样的情况,两个位置被同一辆车堵住了,但是有相同的日期和时间(相同的秒)。除了重复条目的最后一行/位置外,我如何删除这辆车的所有位置(但只有在重复的日期和时间相同的情况下)?
谢谢..
发布于 2020-11-22 22:00:47
如果我没听错的话:
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
子句即可。
请注意,将日期和时间存储在两个单独的列中会使逻辑变得不必要地复杂。如果这些是字符串(就像它们看起来的那样),我们也可以将这个条件表述为:
and p1.date || p1.time > p.date || p.time
https://stackoverflow.com/questions/64960029
复制相似问题